当我从一个 activity 转到另一个时如何显示警报对话框?

How to show Alert dialog when i go from one activity to other?

我有 2 个活动,我想在从 Activity B 移动到 Activity A 时显示警报对话框。

这就是我从一个 activity 到另一个的方式。

Intent intent = new Intent(Activity_B.this,
    Activity_A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);                   

现在当我到达 Activity_A 时,我想显示下面的警告对话框。

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage(context.getString(R.string.xxxx));
    builder.setPositiveButton(context.getString(R.string.ok_button), new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alertDialog = builder.create();
    alertDialog.show();
}

我应该把这个对话框放在哪里?

编辑了我的问题:-

这是我的流程

Activity A > Activity B (10 个片段) > Activity A

现在,当我从 Activity B 移动到 Activity A 时,在 Activity A 启动后,我想显示警报对话框。 注意:仅当我从 Activity B 移动到 Activity A.

您可以使用 Activity#getCallingActivity 来确定 Activity A 是否被 Activity B 打开,并围绕该检查包装您的对话框逻辑。

但是,这需要您使用startActivityForResult打开Activity A.

我相信这就是您要找的。在要显示对话框的 activity 开始时重写该方法。希望对你有帮助。

@Override
public void onStart(){
    super.onStart();
    //Your Dialog here
}

对于我来说,我只是简单地这样输入然后对话框就会出来

  public class AddItem extends Activity {
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_add_item);

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage(context.getString(R.string.xxxx));
            builder.setPositiveButton(context.getString(R.string.ok_button), new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alertDialog = builder.create();
    alertDialog.show();
    }
    }

终于找到方法了,谢谢解答

之前我总是错的原因是我在 Activity_B 中使用了 startActivtyResult 并试图在其中启动警报对话框。这样

Intent intent = new Intent(Activity_B.this,
    Activity_A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent,2);

这是正确的方法:

从 Activity_A 我这样调用 Activity_B :

  Intent intent = new Intent(Activity_A.this, Activity_B.class);
               map.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivityForResult(intent, 2);

并且在 Activity_A 的 OnActivityResult 中:

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 2) {
            if (resultCode == Activity.RESULT_OK) {
          AlertDialog.Builder builder = new AlertDialog.Builder(context);
          builder.setMessage(context.getString(R.string.xxxx));
          builder.setPositiveButton(context.getString(R.string.ok_button),            new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
           alertDialog = builder.create();
           alertDialog.show();
}
        }

在 Activity_B 中,我只是这样调用 Activity_A:

 Intent intent = new Intent();
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        setResult(Activity_A.RESULT_OK, intent);

        finish();