如果我从一个活动切换到另一个活动,则在屏幕上显示AlertDialog

时间:2013-01-10 05:20:03

标签: android android-activity alertdialog android-alertdialog

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

场景是这样的: 1.我的应用程序正在运行,我正在申请的第二页。 2.我按下后退键,但同时第二页的一个场景是执行& AlertDialog在屏幕上打开。 我已按下后退按钮我重定向到主屏幕& AlertDialog不带任何用户输入。

已经使用过这个,但它对我来说不适用。

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

如果我浏览它,我想在主页(MainActivity)上显示相同的AlertDialog。 我想为我的所有页面做到这一点。

任何人都有任何想法&建议。

谢谢,

4 个答案:

答案 0 :(得分: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中设置内容视图。

希望它会对你有所帮助。

答案 1 :(得分:0)

如果您想在用户离开第二个活动之前获得用户互动,那么您必须将AlertDialog放在第二个活动的onStop()onDestroy() 中,或者如果您想要显示AlertDialog在您的第二个活动关闭并且您处于主要活动之后,您必须将AlertDialog放在主要活动onActivityResult()中。 (但为此你必须使用startActivityForResult()

从MAin活动开始第二个活动

答案 2 :(得分:0)

如果你想在第二个Activity上显示警告对话框,那么在启动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();        
}

答案 3 :(得分: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();
    }