0

アプリのアクティビティを終了するときにデータを保存しようとしています。

@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();

}

本当の問題は、戻るボタンを押した後、ダイアログが一瞬表示され、ユーザーが「はい」/「いいえ」ボタンをクリックせずに消えてしまうことです。

4

1 に答える 1

0

super.onBackPressedを削除

@Override
public void onBackPressed() {

    super.onBackPressed(); //remove this because this will close the activity
    if(loadInboxPreferencesCurrent()==false){
         showAlertUserDialogInbox();
    }

}

ダイアログで肯定/否定ボタンをクリックした後など、別の場所でアクティビティを終了することを確認してください。

あなたがやろうとしていることが、データを保存するための最良のアプローチであるかどうかはわかりません。

おそらくアクティビティの onSaveInstanceState() を確認する必要がありますが、ユーザーの確認後にのみ保存することが目的の場合は、最初のアプローチで十分です。

于 2013-07-01T08:22:26.890 に答える