みんなホームボタンのあるアクティビティがあります。ボタンを押すと、「保存せずに終了しますか?」というメッセージとともに警告ダイアログが表示されます。また、ユーザーは次のオプション (ボタン) を使用できる必要があります。
1->はい
2->いいえ
3->保存して終了
しかし問題は、ホームボタンを押しても警告ダイアログが表示されないことです。
次のコードを試しました:
// これはボタンが押されたときです
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.backHome:
final AlertDialog alertDialog = new AlertDialog.Builder(
DataView.this).create();
// alertDialog.setTitle("Exit Without Save ?");
alertDialog.setMessage("Exit Without Saving");
alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent i = new Intent(DataView.this, DiaryActivity.class);
startActivity(i);
finish();
}
});
alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
alertDialog.dismiss();
}
});
alertDialog.setButton3("Save and Exit",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
rowIdreceived = getdata.getLong("row_id");
String title_updated = topicDisplay.getText()
.toString() + " ";
String story_updated = StoryField.getText()
.toString();
DataHolder entry = new DataHolder(DataView.this);
try {
entry.open();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
entry.updateEntry(rowIdreceived, title_updated,
story_updated);
entry.close();
Intent i = new Intent(DataView.this,
DiaryActivity.class);
startActivity(i);
finish();
}
});
break;
DiaryActivity がメイン クラスです。
DataView は現在のアクティビティです。
はいボタンは、単に現在のアクティビティを終了し、DiaryActivity であるメイン アクティビティに戻ります。
[いいえ] ボタンをクリックすると、警告ダイアログが「閉じられ」、ユーザーは作業を保存して後で終了できます。
保存して終了ボタンは、作業をデータベースに保存し、現在のアクティビティを終了してメイン アクティビティに戻ります。