-1

这是我的问题,

我的应用程序中有一个主菜单,该菜单启动一个名为farm1 的活动。当这个farm1 启动时,我会显示一个对话框,它解释了如何在当前活动(farm1)和第二个活动之间导航,这实际上是我的farm1 活动的第二部分(称为farm2)。

我正在使用滑动和

StartActivity(farm1);
finish();

StartActivity(farm2);
finish();

如您所见,当我从农场 2 导航到农场 1 时,我开始了此活动,因此,我的对话框再次出现!

而且我不希望这种情况发生,我只想在主菜单活动调用farm1活动时出现我的对话框。

考虑到我的对话创建是在 onCreate 中,这是我的问题:

  • 我可以在农场 1 和农场 2 活动之间导航而不必再次启动它们,这样我的对话框就不会再次出现。
  • 我可以仅在从我的主菜单活动启动 farm1 时显示此对话框吗?
4

2 回答 2

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
}

但是,更好的解决方案是finish()在打开 Farm2 时不调用,这将使 Farm1 在后台可用,并且在您关闭 Farm2 时从当前状态恢复。这通常是活动的预期行为。

于 2012-12-04T19:14:26.800 回答
0

您可以使用 Intent 发送您从中启动 farm1 Activity 的标志:

第 1步:当您启动 farm1 Activity 时,从主菜单 Activity 发送带有标志的 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
              }
        }

You can also do this by using SharedPreferences

于 2012-12-04T19:14:43.400 回答