DatePickerDialogのonDateSetが2回よばれる。
機種依存かもしれないですが、DatePickerDialogのonDateSetが2回よばれる現象が発生しました。
その場合の対処法:
DatePickerDialog.OnDateSetListener DateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(android.widget.DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
if (!datePicker.isShown()) {
return;
}
displayCalendarView(year, monthOfYear);
mCallBack.monthChangedCallBack(prevYear, prevMonth, year, monthOfYear);
}
};
下記の部分で、2回目のonDateSetの対処しています。
if (!datePicker.isShown()) {
return;
}
こんな対応で良いのか?
Dialogが閉じたことを検出する
Dialogが閉じたことを検出する。
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
}
});
setTextの文字が途中で切れてしまうとき
textView.setText()で設定した文字が途中で切れてしまうことがありました。
そんな時、
textView.setInputType(InputType.TYPE_CLASS_TEXT);
というように、textViewですが、InputTypeをTEXTにしてやったら解決することがあります。
理由は不明ですが・・・。
BACKボタンのイベントを取得する
BACKボタンのイベントを取得するには、Activity#onKeyDownを使用します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
return super.onKeyDown(keyCode, event);
}else{
return super.onKeyDown(keyCode, event);
}
}
Androidでアプリを終了させる
Activity#moveTaskToBack (boolean nonRoot)
アプリケーション全体を終了する際の推奨される終了方法です。
アプリケーションを中断状態にします。
moveTaskToBack(true);
ナビゲーションバーに戻るボタンを付ける
ActionBarに戻るボタンを設置する。
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
戻るボタンを押したときのイベントはActivity#onOptionsItemSelected()で行う。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}