自分用Androidメモ
Calendar: 古いAPIだと使えない
- java.util.Calendar を使う
Calendar: 月の最後の日を取得したい
Calendar cal = Calendar.getInstance();
int max_day = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
アプリ終了後も変数を保存したい
- SharedPreferencesを使う
http://android.roof-balcony.com/shori/strage/preference/
http://androidhacker.blog94.fc2.com/blog-entry-89.html
c.f. Activityのライフサイクルについて
https://qiita.com/m2mtu/items/ac0d61e884519a4c61bb
ActionBarを非表示にしたい(簡単に)
getSupportActionBar().hide();
BottomNavigationView: itemの選択がおかしい
- Activityで書かない、Fragmentを使う
- Activityで書いちゃったら、switchの各caseのreturnをfalseにする
TableLayout: 同じ行の他のセルを取得したい
- getParent(), getChildAt(int position)を使う
TableRow parentRow = (TableRow)view.getParent();
String p_day = ((TextView)parentRow.getChildAt(0)).getText().toString();
SQLite: なぜか不具合が起きる
- いったんアプリをアンインストールする
SQLite: 複数条件指定したい
db.update("records", cv, "ym = ? AND day = ?", new String[]{p_ym, p_day})
SQLite: レコードがあればupdate、なければinsertしたい
- db.updateの戻り値(=更新されたレコード数)を使う
res = db.update("records", cv, "ym = ? AND day = ?", new String[]{p_ym, p_day});
if (res < 1){
// record doesn't exist
cv.put("ym", p_ym);
cv.put("day", p_day);
db.insert("records", null, cv);
}
SQLite: データベースの中身を見たい
- Android StudioのTerminalを使う
> cd c:\Users\<ユーザー名>\AppData\Local\Android\sdk\platform-tools
> adb shell
> su
> cd data/data/<パッケージ名>.<アプリ名>/databases
> sqlite3 <データベース名>
> <SQLを入力>
TextView: テキストサイズをspで設定したい
TextView tv;
// tvを取得
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20)
EditText: 改行できないようにしたい
editText.setInputType(InputType.TYPE_CLASS_TEXT);
EditText: Doneキーをつけたい
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
EditText: Doneキーが押されたらなんかしたい
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE){
// 何かする
// キーボードを閉じる
InputMethodManager manager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
}
return true;
}
TimePickerDialog: 3つ目のボタンをつけたい
TimePickerDialog tpg = null;
// tpgを初期化する
tpg.setButton(DialogInterface.BUTTON_NEUTRAL, "DELETE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 何かする
}
});
dp→pxに変換したい
private int dpToPx(int dp){
int px = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()));
return px;
}