-1

これが私の問題です、

アプリにメインメニューがあります。このメニューは、farm1という名前のアクティビティを起動します。このfarm1を起動すると、表示されるダイアログが表示され、現在のアクティビティ(farm1)から2番目のアクティビティ(実際にはfarm1アクティビティの2番目の部分(farm2と呼ばれる))に移動する方法が説明されます。

スワイプと

StartActivity(farm1);
finish();

StartActivity(farm2);
finish();

ご覧のとおり、farm2からfarm1に移動しているときに、このアクティビティを開始すると、ダイアログが再び表示されます。

そして、これを起こしたくありません。メインメニューアクティビティがfarm1アクティビティを呼び出したときにダイアログが表示されるようにしたいだけです。

私のダイアログの作成がonCreateにあるという事実を考慮して、ここに私の質問があります:

  • ファーム1とファーム2のアクティビティを再度開始せずにナビゲートして、ダイアログが再度表示されないようにすることはできますか?
  • メインメニューアクティビティからfarm1を起動した場合にのみ、このダイアログを表示できますか?
4

2 に答える 2

0

アクティビティ 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

farm1 アクティビティを次のように開始するフラグを送信するためにインテントを使用できます。

ステップ 1: farm1 アクティビティを次のように開始するときに、メイン メニュー アクティビティからフラグ付きのインテントを送信します。

Intent intent = new Intent(mainmenu.this, farm1.class);
intent.putExtra("flag_from", "mainmenu");
startActivity(intent);

STEP 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を使用して行うこともできます。

于 2012-12-04T19:14:43.400 に答える