0

メニュー付きの3つのアクティビティがあります。メニュー全体でアクティビティを切り替えることができます。各アクティビティの変更を維持するために、「android:launchMode="singleInstance」を AndroidManifest に取りました。

 ------------------
|                  |
|                  |
|                  |
|        A         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|##A##|  B  |  C   |
 ------------------
      A Activity

 ------------------
|                  |
|                  |
|                  |
|        B         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |##B##|  C   |
 ------------------
      B Activity

 ------------------
|                  |
|                  |
|                  |
|        C         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |  B  |##C## |
 ------------------
      C Activity

これは正しく動作します。私の問題は、終了したいために戻るキーを押すと、アプリを閉じるために 3 回押す必要があることです。

この手続きをなくしたい。したがって、A、B、または C アクティビティでキーを押し戻すと、すべて閉じます。どういうわけか私はジャンプバックスタックが欲しいです。

アクティビティ フラグを使用してみます。たとえば、次のようにします。

    Intent intent=new Intent(this, B.class);
    intent.setFlag(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
    startActivity(intent);

これには2つの問題があります。API 11以降をサポートしただけで、これは他のアクティビティを閉じません。(もう一度起動すると、他のアクティビティの変更が残っていることがわかります) * Fragment
* を知っていて、これらを使用するとはるかに簡単になりますが、* Fragment * なしで解決する必要があります。私の悪い英語でごめんなさい。

4

3 に答える 3

0

Fragments を使用するとはるかに簡単で、Fragments を使用することをお勧めします。

お気に入り

Intent intent=new Intent(this, B.class);
startActivity(intent);
finish();

アクティビティ A を終了し、アクティビティ B を開始します。このようにアクティビティ B で戻ると、アプリケーションが閉じます。

于 2013-04-21T21:21:44.440 に答える
0

私の頭に浮かぶ唯一のことは、アクティビティを保持するタブを使用した古いスタイルのプログラミングです。

ここに例http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

タブを表示したくない場合は、簡単に完全に非表示にできます。

しかし、個人的にはフラグメントをお勧めします。

于 2013-04-21T22:28:33.507 に答える
0

必要なのは、カスタムBackアクティビティ スタックです。

// Creates an explicit intent for the top activity that will be opened (the map)
Intent resultIntent = new Intent(context, <your_activity>.class);
resultIntent.putExtras(extras);

// The stack builder object will contain an artificial back stack for the
// started Activity. This ensures that navigating backward from the 
// Activity leads out of your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(<your_activity>.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
stackBuilder.startActivities();

そのコードが本質的に行っていることは、押し戻しからのアクティビティと次のアクティビティが同じであるということです。このように、戻るを押すと、ホーム画面に移動します。

于 2013-04-21T22:46:20.480 に答える