这是我的问题,
我的应用程序中有一个主菜单,此菜单启动名为farm1的活动。 当这个farm1启动时,我有一个显示的对话框,它解释了如何在当前活动(farm1)和第二个活动之间导航,这实际上是我的farm1活动的第二个部分(称为farm2)。 p>
我正在使用滑动和
StartActivity(farm1);
finish();
和
StartActivity(farm2);
finish();
正如您所看到的,当我从farm2导航到farm1时,我开始此活动,因此,我的对话框再次出现!
我不希望这种情况发生,我只想在主菜单活动调用farm1活动时显示对话框。
考虑到我的对话框创建在onCreate中,这是我的问题:
答案 0 :(得分:0)
启动Activity farm1时,请创建一个带有额外参数的Intent
:
//Put this where you return to Farm1:
Intent intent = new Intent(Farm2.this, Farm1.class);
intent.putExtra("ignoredialog", true);
startActivity(intent);
//And this in the onCreate() of Farm1:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if( extras != null && extras.containsKey("ignoredialog") &&
extras.getBoolean("ignoredialog") ){
//Do not show dialog
}else{
//Show dialog
}
但是,更好的解决方案是在打开Farm2时不调用finish()
,这会使Farm1在后台运行,并且当您关闭Farm2时它将从当前状态恢复。这通常是活动的预期行为。
答案 1 :(得分:0)
您可以使用Intent发送标志,您将从该标志启动farm1 Activity:
步骤1:当您启动farm1活动时,从主菜单活动发送含有标志的Intent:
Intent intent = new Intent(mainmenu.this, farm1.class);
intent.putExtra("flag_from", "mainmenu");
startActivity(intent);
第2步:在farm1 Activity onCreate方法中接收意图为:
public class farm1 extends Activity {
String flag="";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Recive Intent here
Bundle extras = getIntent().getExtras();
if(extras !=null)
flag = extras.getString("flag_from");
else
flag="";
}
@Override
protected void onResume() {
super.onResume();
// Check here flag before showing Alert dialog
if(flag=="mainmenu"){
// show alert here
}
else{
// do some code here
}
}
您也可以使用SharedPreferences
执行此操作