1

面白いコンセプトを実装する方法を見つけようとしています。

アプリケーションの下部に3つのボタンがあるバーがあるとします。これらをA、B、Cと呼びます。これらをアプリの3つの領域として考えてもらい、それぞれに独自のアクティビティスタックがあります。

Bを押すと、最初にメインのB画面が表示されます。この画面に、リスト上の特定のアイテムの詳細など、別の画面に移動するための機能があるとします。

ここで、詳細画面で下部のボタンCを押すと、メインC画面が表示されます。

Bを押す(または戻るボタンを押す)と、ユーザーはBアクティビティスタックの最後の画面に移動します。これは、メインのB画面ではなく、詳細画面です。

これは可能ですか?物事を正しく理解していれば、A用に1つ、B用に1つ、C用に1つ、合計3つのタスクが必要です。他に何をしなければなりませんか?

4

2 に答える 2

0

実際、説明したシナリオは1つのアクティビティスタックのみで構成されています。存在するアクティビティスタックの数は、実際にはAndroid OSによって制御されており、ルールの下でのみ最善を尽くすことができます。

説明によると、ナビゲーション履歴はB_main -> B_details -> C_main、BACKが後になりB_main -> B_detailsます。3つのボタンがこれらすべてに実装されている場合Activity(ボタンパネルをカスタマイズしてレイアウトファイルに含めることで実行できます)、実際にはスタックは1つだけです。

于 2011-04-13T18:57:41.603 に答える
0

もちろん、それは可能で簡単に実装できます。ただし、これを実装する方法を理解するには、これを読む必要があります。

3つのルートアクティビティがあります:A_main、B_main、C_main。各アクティビティは新しいタスクを開始する必要があります。それを行うには、次のものが必要です。

  1. マニフェストで、それらに対するさまざまな親和性を宣言します。

    アクティビティandroid:name ="。A_main"android:taskAffinity="。A"

    アクティビティandroid:name ="。B_main"android:taskAffinity="。B"/>

  2. タスクを開始(切り替え)するには、フラグを使用して新しいインテントを開始します(ApplicationContextを使用できます)。

    private static final int ROOT_INTENT_FLAG = 
        Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
    

タスクを切り替えるUIの機会を提供するには、Androidメニューなどを使用できます。タスクをクリアしたい場合-フラグIntent.FLAG_ACTIVITY_CLEAR_TOPを追加するだけです

そして...アプリケーションの起動時に起動されるLauncherActivityが必要です。このアクティビティは、最後にアクセスしたタスクを復元し、それ自体を終了する必要があります。復元するには-上記のフラグでインテントを使用するだけです(項目2)。

于 2011-04-14T09:47:38.977 に答える