Android 在特殊情况下如何处理dialog.Disclose?
这是我的问题 我的应用程序中有一个主菜单,该菜单启动名为farm1的活动。 启动此farm1时,会显示一个对话框,它解释如何在当前活动(farm1)到第二个活动之间导航,第二个活动实际上是我的farm1活动的第二部分(称为farm2) 我在用刷卡和刷卡Android 在特殊情况下如何处理dialog.Disclose?,android,android-activity,dialog,Android,Android Activity,Dialog,这是我的问题 我的应用程序中有一个主菜单,该菜单启动名为farm1的活动。 启动此farm1时,会显示一个对话框,它解释如何在当前活动(farm1)到第二个活动之间导航,第二个活动实际上是我的farm1活动的第二部分(称为farm2) 我在用刷卡和刷卡 StartActivity(farm1); finish(); 及 如您所见,当我从farm2导航到farm1时,我会启动此活动,因此,我的对话框再次显示 我不希望发生这种情况,我只希望在主菜单活动调用farm1活动时出现对话框 考虑到我的对话
StartActivity(farm1);
finish();
及
如您所见,当我从farm2导航到farm1时,我会启动此活动,因此,我的对话框再次显示
我不希望发生这种情况,我只希望在主菜单活动调用farm1活动时出现对话框
考虑到我的对话框是在onCreate中创建的,以下是我的问题:
- 我可以在farm1和Farm2活动之间导航而不必再次启动它们,这样我的对话框就不会再次显示
- 我能否仅在从主菜单活动启动farm1时显示此对话框
//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时从当前状态恢复。这通常是活动的预期行为。您可以使用意图发送标志,从中启动farm1活动,如下所示:
Intent intent = new Intent(mainmenu.this, farm1.class);
intent.putExtra("flag_from", "mainmenu");
startActivity(intent);
第1步:当您启动farm1活动时,从主菜单活动发送带有标志的意向,如下所示:
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
}
}
您也可以使用来完成此操作。请包含一些代码,这样会更容易提供帮助。请发布您的代码摘录。另外,你能把这个问题概括成一个更一般的问题吗?也许:“如何只显示一次对话框?”请尝试描述更多细节,尤其是在相关代码中。谢谢大家!如果与flag方法完美配合!下次我还会发帖代码行问@user1876708很高兴能为您提供帮助!如果答案解决了您的问题,请将其标记为已接受(单击左侧的复选标记)以关闭问题。