Шах*_*Шах 11 android android-fragments navigation-drawer android-toolbar
请向我解释......我的导航抽屉里面有导航抽屉Activity,它与之同步Toolbar(如ActionBar).活动有很少的片段,在不同的片段中,我需要使用不同的AppBar模式(一个视差,另一个简单).所以,我认为我应该CoordinatorLayout在每个框架中设置AppBar和内容.
但是如何在new上替换最后一个工具栏以保存与Drawer的同步?或者这是错误的方式,我需要把它变成别的吗?
不确定我的方法是否合适,但我尝试将此公共方法添加到我的活动中:
public void setToolbar(Toolbar toolbar) {
if(toolbar != null) {
setSupportActionBar(toolbar);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
} else {
drawer.setDrawerListener(null);
}
}
Run Code Online (Sandbox Code Playgroud)
我把它添加到所有片段中:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
((MainActivity)getActivity()).setToolbar(toolbar);
}
@Override
public void onDestroyView() {
((MainActivity)getActivity()).setToolbar(null);
super.onDestroyView();
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我不确定它是否可能导致内存泄漏或任何其他性能问题.也许有人可以帮忙吗?
您可以像以下代码一样DrawerLayout从每个访问 main Fragment:
AppCompatActivity actionBar = (AppCompatActivity) getActivity();
actionBar.setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) actionBar.findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
getActivity(), drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11391 次 |
| 最近记录: |