ともちゃんのAndroid開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA言語を習得して行きます。ともちゃんの備忘録も兼ねています。

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);
}

 

UCalendarView

カレンダー機能を作ってみました。

サンプルソースコードです。

http://uchida001tmhr.web.fc2.com

良かったら使ってみてください。

 
f:id:uchida001tmhr:20161206231257j:image