2017-10-14 15 views
1

私のアプリケーションでは、MainActivityはナビゲーション・ドロワーを使用していくつかのフラグメントをホストします。 MainActivityはツールバーを提供し、フラグメントコンテンツはフレームレイアウトのツールバーの下に表示されます。アクティビティのツールバーを使用してフラグメントから移動する

MainActivityでは、私の最初のフラグメントを開始し、以下のようにツールバーを初期化します。

fragmentManager.beginTransaction().replace(R.id.content_frame, new FirstFragment()).commit(); 

toolbar = (Toolbar) findViewById(R.id.toolbar); 

setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setTitle("Fragment 1"); 

私のフラグメントの1つにサブフラグメントが必要です。そのサブフラグメントに戻るボタンを追加し、MainActivity内でonBackPressed()をオーバーライドしたいと思います。

現在のところ、私のツールバーには3行のハンバーガーしか表示されていません。このボタンを押すとナビゲーション・ドロワーが開き、自分のフラグメントのリストが表示されます。

ハンバーガーの代わりに私のサブフラグメントに戻る矢印を表示する方法がわかりません。それから、onBackPressed()イベントをキャッチしてそれを処理する必要があります。

私はこれを間違って実行している可能性があり、フラグメントの代わりにアクティビティを使用する必要がありますが、そうした場合、slide_in/slide_outフラグメントのアニメーション化はできません。ツールバーはフレームレイアウトと共にスライドし、私はそれを望んでいません。

ツールバーがそのまま残っている間は、フラグメントの内容にトランジションが表示されます。 View Pagerで期待するのと同じように。

私はどんな提案もありがとう。

ありがとうございます!

getSupportActionBar().setHomeAsUpIndicator(R.drawable.your_arrow_icon); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

「ホームをクリックし、」あなたのonOptionsItemSelectedをオーバーライドして、家のMenuItemのクリックリスナーを処理する必要がありますを処理するための(android.R.id:

答えて

1

あなたはそれらの行を呼び出して、あなたの「ホームアイコン」を変更することができます.home)。

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == android.R.id.home) { 
      finish(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

幸運!

関連する問題