0

私は5つの活動をしています

1 >> 2 >> 3 >> 4 >> 5

一番の活動はファーストローンチクラスです。

2番は私のリストデータクラスです

3番と4番は私の入力データクラスです

5番はフィニッシングクラスです

アクティビティ番号 5 で、コードをボタンに入力して、終了時に前に戻るようにしました

前のアクティビティに戻るボタンが 2 つあります。

  1. 活動番号 2 に戻る
  2. 活動番号 1 に戻る

ここに5番のアクティビティのボタンがあります

1)。

Intent intent = new Intent(getApplicationContext(), 2.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                startActivity(intent);

2)。

Intent dashboard = new Intent(getApplicationContext(), 1.class);
                dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(dashboard);

編集

_ ボタン番号2を選択したとき)。最初のビルド アプリケーションで、クリックして番号 1 のアクティビティに戻ります。戻るボタンをタップすると、アクティビティに5番目のアクティビティが表示されなくなり、機能します。

シナリオa : 1 >> 2>> 3 >> 4 >> 5 >> 1 >> アプリを終了

b . ボタン番号2を選択したとき)。最初のビルド アプリケーションで、もう一度データを入力しようとし、最後に 5 番目のアクティビティでボタン番号1 を選択します)。クリックして 2 番目のアクティビティに戻ります。戻るボタンをタップすると、アクティビティに5番目のアクティビティが表示されなくなり、機能します。

シナリオb : 1 >> 2 >> 3 >> 4 >> 5 >> 1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 戻るボタンをタップ >> 1 >> 戻るボタンをタップ >> 終了アプリ

c . しかし、ボタン番号1を選択すると)。最初のビルド アプリケーションで。クリックして 2 番目のアクティビティに戻ります。戻るボタンをタップすると、前のアクティビティが再び表示されるか、アクティビティ番号 5 が表示されます。

シナリオc : 1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 戻るボタンをタップ >> 5

d . ボタン番号1が必要です)。最初のビルド アプリケーションで [戻る] ボタンをタップしたときに前またはアクティビティ番号 5 が表示されないか、ボタン番号2 を選択しないと最後のアクティビティが表示されません)。最初。

シナリオd : 1 >> 2 >> 3 >> 4 >> 5 >> 2 >> 戻るボタンをタップ >> 1 >> アプリを終了

それを修正する方法は?

昨日から今日までの問題

私の悪い英語でごめんなさい。

編集

私のマニフェストで私は宣言します

ナンバー 1 のアクティビティは MainMenu.class です。

<activity
            android:name="hariff.ltis.mainmenu.MainMenu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

2 番は MainPetakTetap.class です。

<activity
            android:name="hariff.ltis.petaktetap.MainPetakTetap"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

活動番号 3、4、5

<activity
            android:name="hariff.ltis.petaktetap.MainUpdate"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

<activity
            android:name="hariff.ltis.petaktetap.UpdateLog"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>

<activity
            android:name="hariff.ltis.petaktetap.CPetakTempView"
            android:label="@string/title_activity_main_petak_tetap" >
        </activity>
4

2 に答える 2

1

私には、システム キル アクティビティ 2 のように思われるため、2 はもうスタックにないため、新たに 5 の上に作成されます。したがって、バック プレスを押すと 5 が得られます。回避策 (よくわかりません)それは動作します)は次のとおりです

  1. アクティビティ 3 からアクティビティ 4 を開始し、アクティビティ 4 からアクティビティ 5 を開始する場合は、startActivityForResult を使用します。

  2. アクティビティ 4 で

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == RESULT_OK)
        {
             setResult(RESULT_OK);
             finish();
        }
    }  
    
  3. アクティビティ 3 で

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
    
        if (resultCode == RESULT_OK)
        {
             new Intent(getApplicationContext(), 2.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
            startActivity(intent);
             finish();
        }
    } 
    
  4. アクティビティ 5 で

    setResult(RESULT_OK);
    finish();
    
于 2013-04-04T07:28:55.970 に答える
0

任意のアクティビティから最後のアクティビティに戻る場合。

finish()新規作成の代わりに使用してくださいIntent

あなたのコードで1.classは、すでに存在するアクティビティの新しいインテントを作成しています。これは間違っています

Intent dashboard = new Intent(getApplicationContext(), 1.class);
                dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(dashboard);

ボタンクリックでこれを行う

finish();//これにより、スタックにある現在のアクティビティが終了します。

thisまたはcurrent activity name instead ofgetApplicationContext()`を使用してみてください。

更新: アクティビティに行きたい場合は、使用するだけですStartActivityForResult()

于 2013-04-04T04:09:41.547 に答える