Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 工具栏内部片段_Android_Android Fragments_Android Actionbar_Navigation Drawer_Toolbar - Fatal编程技术网

Android 工具栏内部片段

Android 工具栏内部片段,android,android-fragments,android-actionbar,navigation-drawer,toolbar,Android,Android Fragments,Android Actionbar,Navigation Drawer,Toolbar,在我的项目中,我有一个活动和不同的片段,为了一些理由,我使用了片段中的工具栏 我还有一个抽屉菜单,这就是我在主要活动中添加的内容 mDrawerToggle = new ActionBarDrawerToggle(this, this.mDrawerLayout, 0, 0) { public void onDrawerClosed(View drawer) { super.onDrawerClosed(drawer);

在我的项目中,我有一个活动和不同的片段,为了一些理由,我使用了片段中的工具栏

我还有一个抽屉菜单,这就是我在主要活动中添加的内容

mDrawerToggle = new ActionBarDrawerToggle(this, this.mDrawerLayout, 0, 0)
    {

        public void onDrawerClosed(View drawer) {
            super.onDrawerClosed(drawer);
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawer) {
            super.onDrawerOpened(drawer);
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.addDrawerListener(mDrawerToggle);
.
.
.
public void setDrawerState(boolean isEnabled) {
    if (isEnabled) {
        mDrawerToggle.setDrawerIndicatorEnabled(true);
        mDrawerToggle.syncState();

    } else {
        mDrawerToggle.setDrawerIndicatorEnabled(false);
        mDrawerToggle.syncState();
    }
}
我有两个片段:home和detail片段 在我的homeFragment中,我希望看到汉堡包图标,当我单击它时,抽屉菜单开始(这是我第一次单击它时发生的情况)

HomeFragment中的代码:

((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
    ((MainActivity) mContext).setDrawerState(true);
接下来,当我从主片段开始细节片段时,我必须看到上插入符号图标,当我单击它时,我必须返回主片段

详细代码片段:

((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
    ((MainActivity) mContext).setDrawerState(false);
当我回去的时候,汉堡包图标已经不起作用了,有时,对于其他低级的fragmants来说,back图标也不起作用了

我所做的是正确的还是有更好的方法


请提供任何帮助。

在调用
setContentView(int)
后,只需在
onCreate(Bundle)
方法中执行一次
setDisplayHomeAsUpEnabled(true)
setHomeButtonEnabled(true)
即可,每个片段都有自己的工具栏。如果您将多个工具栏与一个抽屉一起使用,可能会使其不同步(只是猜测)。在调用
setDrawerState(boolean)
之后,您是否可以尝试调用
syncState()
?我已经在
setDrawerState
中添加了
syncState()
,检查上面的代码,它应该足以执行
setDisplayHomeAsUpEnabled(true)
setHomeButtonEnabled(true)
一次,在
onCreate中(Bundle)
method,在调用
setContentView(int)
后,每个片段都有自己的工具栏,可能就是它。如果在单个抽屉中使用多个工具栏,它可能会使其不同步(只是推测)。在调用
setDrawersState(布尔值)后,是否可以尝试调用
syncState()
?我已经在
setDrawerState
中添加了
syncState()
,请检查上面的代码