2

私はこの実際のナビゲーションツリーを持っています:

A => B => C

構成 B によると、スキップすることができ、ナビゲーションは次のようになります。

A => C

いずれにせよ、B は C の親のままです。

したがって、(B を介してかどうかに関係なく) C に移動すると、アクション バーの上ボタンをタッチすると B に到達することが期待されます。

私のマニフェストは次のように定義されています:

 <activity android:name="my.package.A"></activity> 
 <activity android:name="my.package.B"></activity> 
 <activity android:name="my.package.C"
           android:parentActivityName="my.package.B"> 
 </activity>

私のアプリは Android 4.1 以降を対象としているため、<meta data>タグは必要ありません

C アクティビティは次のように設定されます。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_int);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}

したがって、ドキュメントによると、 「アップ」すると、Bアクティビティが作成されるか、元に戻されます。

問題 :

B をスキップする (A から C に移動する) 場合、「アップ」するとアプリケーションが閉じます (A が終了したため、予想される動作) が、B を作成する必要があります。

onOptionsItemSelected() shouldUpRecreateTask()B が存在しなくても常に false を返します。

B を介して C に移動すると (A=>B=>C)、上ボタンで正しく B に戻ります。

私は何を間違っていますか?

ありがとう。

4

0 に答える 0