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

    } 

祝你好运!