1

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

这就是我从一项活动转到另一项活动的方式。

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

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

编辑了我的问题:-

这是我的流程

活动 A > 活动 B(10 个片段) > 活动 A

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

4

4 回答 4

2

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

  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();
    }
    }
于 2016-10-04T03:56:18.777 回答
0

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

我之前总是出错的原因是我在 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();
于 2016-10-04T20:26:25.737 回答
0

我相信这就是你要找的。覆盖要显示对话框的活动开始时的方法。希望能帮助到你。

@Override
public void onStart(){
    super.onStart();
    //Your Dialog here
}
于 2016-10-04T03:30:38.090 回答
0

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

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

于 2016-10-03T21:23:45.597 回答