0

当我通过导航(后退按钮)从一个活动切换到另一个活动时,我遇到了显示 AlertDialog 的问题。

场景是这样的: 1. 我的应用程序正在运行,我在应用程序的第二页。2. 我按下后退按钮,但同时在第二页执行一个场景并且 AlertDialog 在屏幕上打开。3. 我已经按下后退按钮,我重定向到主屏幕并在没有任何用户输入的情况下关闭 AlertDialog。

已经用过这个,但它不适合我。

1.  Intent.FLAG_ACTIVITY_NEW_TASK
2. onRetainNonconfigurationInstance() & getLastNonConfigurationInstance()

如果我浏览它,我想在主页(MainActivity)上显示相同的 AlertDialog。我想为我的所有页面执行此操作。

任何有任何想法和建议的人。

谢谢,

4

4 回答 4

1

第 1 步:将您的 SharedPreferences 放入您的第二个活动中

SharedPreferences myPrefs = getSharedPreferences(
                                "myPrefs", 0);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("ALERT","YES");
prefsEditor.commit();

第2步:

在您的 HomeActivity 的 OnCreate 中编写以下代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

     // Getting ALERT from Sharedpreference 
    myPrefs = getSharedPreferences("myPrefs", 0);
    ALERT = myPrefs.getString("ALERT", "NO");
         if(ALERT.equals("YES"){
           // Write your Code for Showing Alert Dialogue
           }else{
        setContentView(R.layout.login);
            // Write rest og the Code for Your Home Acitivity
          }

完成 AlertDialogue 后,您必须在此处为 HomeActivity 设置内容视图。

希望它会帮助你。

于 2013-01-10T05:32:18.037 回答
0

如果您想在用户离开 2nd Activity 之前获得用户交互,那么您必须将 AlertDialog 放入2nd ActivityonStop()或如果您想在您onDestroy()的2nd Activity 关闭并且您处于 Main Activity 之后显示 AlertDialog ,那么您必须将 AlertDialog放入主要活动。(但为此,您必须使用 MAin Activity 启动第二个 Activity )onActivityResult()startActivityForResult()

于 2013-01-10T05:26:38.403 回答
0

如果您想在第二个活动本身上显示警报对话框,在启动 MainActivity 之前,请使用以下概念,

    @Override
public void onBackPressed() {

    showAlertDialog(SecondActivity.this);

}

    private void showAlertDialog(Context mCtx) {
    // TODO Auto-generated method stub
    AlertDialog.Builder builder = new AlertDialog.Builder(mCtx);
    builder.setCancelable(false);
    builder.setTitle("Title");
    builder.setMessage("Message text !!");
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            finish();
        }
    });
    builder.create().show();        
}
于 2013-01-10T05:35:04.067 回答
0

试试这个..

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        final Dialog CloseDialog = new Dialog(Sample.this);
        CloseDialog.setTitle("Alert");
        CloseDialog.setContentView(R.layout.exit_dialog_box);
        ExitButton = (Button) CloseDialog.findViewById(R.id.ExitButton);
        CloseExitDilog = (Button) CloseDialog
                .findViewById(R.id.CloseExitDialog);

        ExitButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                     ....../////////

            }
        });

        CloseExitDilog.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ///
            }
        });
        CloseDialog.show();
    }
于 2013-01-10T06:00:05.197 回答