2017-10-14 167 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"); 

我的一個片段需要一個子片段。我想向該子片段添加一個後退按鈕,並在MainActivity中重寫onBackPressed()。

我的工具欄目前只顯示3行漢堡包,當它按下時打開導航抽屜並顯示我的片段列表。

我不確定如何在我的子片段中顯示後退箭頭而不是漢堡包。然後我需要捕獲onBackPressed()事件並處理它。

我可能會這樣做不正確,可能應該使用活動而不是片段,但如果我這樣做,我將無法爲片段slide_in/slide_out轉換設置動畫效果。工具欄會隨着框架佈局一起滑動,我不希望那樣。

我想片段內容顯示一個過渡,而工具欄仍然在位。就像您在View Pager中所期望的一樣。

我將不勝感激任何建議。

謝謝!

回答

1

你可以改變你的「家圖標」調用這些行:

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

對於處理「家庭點擊」你必須重寫onOptionsItemSelected和處理爲家鄉菜單項的點擊監聽器(android.R.id 。家)。

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

    } 

祝你好運!