我有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();
}
我应该把这个对话框放在哪里?
编辑我的问题:-
Here is My Flow
活动A>活动B(10片段)>活动A
现在当我从活动B移动到活动A,活动A启动后,我想显示警告对话框。注意:只有当我从活动B移动到活动a时
对于我来说,我只是简单地这样写然后对话框就会出现
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#getCallingActivity
来确定活动A是否被活动B打开,并围绕该检查包装您的对话框逻辑。
但是,这需要您使用startActivityForResult
打开活动a。
我相信这就是你想要的。在您希望显示对话框的活动开始时重写该方法。希望能有所帮助。
@Override
public void onStart(){
super.onStart();
//Your Dialog here
}
终于找到办法了,谢谢大家的回答
我之前总是错的原因是我在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);
和OnActivityResult中的Activity_A:
@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();