我正在尝试退出应用的活动时保存数据。
@Override
public void onBackPressed() {
super.onBackPressed();
if(loadInboxPreferencesCurrent()==false){
showAlertUserDialogInbox();
}
}
public void showAlertUserDialogInbox() {
AlertDialog.Builder builderMiniAlert = new AlertDialog.Builder(this);
builderMiniAlert.setMessage("Do you want to exit without saving your App. Inbox Settings..\n\nDo you want to Save now. ?")
.setCancelable(false); // disallow user to hit the 'back' button
builderMiniAlert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//Save settings here
onBackPresedNSave();
}
});
builderMiniAlert.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getApplicationContext(), "To set your App. Inbox Settings later, press menu key and select Save Inbox Settings.", Toast.LENGTH_LONG).show();
arg0.dismiss();
}
});
builderMiniAlert.setTitle("Ultimate Sms Inbox Alert...");
builderMiniAlert.show();
}
现在真正的问题是在按下后退按钮后,对话框会显示一秒钟,并且在没有用户点击是/否按钮的情况下消失。
答案 0 :(得分:0)
删除
中的 super.onBackPressed@Override
public void onBackPressed() {
super.onBackPressed(); //remove this because this will close the activity
if(loadInboxPreferencesCurrent()==false){
showAlertUserDialogInbox();
}
}
并确保您在对话框中单击正/负按钮后处理其他地方的活动。
我不确定你想要做的是保存数据的最佳方法。
您应该查看活动的onSaveInstanceState(),但如果您的目的是仅在用户确认之后保存,那么您的第一种方法就可以了。