Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 从ActionBar单击应用程序名称时导航抽屉未打开_Android_Navigation Drawer - Fatal编程技术网

Android 从ActionBar单击应用程序名称时导航抽屉未打开

Android 从ActionBar单击应用程序名称时导航抽屉未打开,android,navigation-drawer,Android,Navigation Drawer,我已经在我的新应用程序中实现了导航抽屉。但我无法从ActionBar获取应用程序名称来切换导航抽屉。但是,当我拖动导航抽屉时,ActionBar会通过更改为箭头来响应此操作 这是我的密码: 服务\u活动\u main.xml ServicesNavigationDrawerFragment.java public class ServicesNavigationDrawerFragment extends Fragment { public final static String TA

我已经在我的新应用程序中实现了导航抽屉。但我无法从ActionBar获取应用程序名称来切换导航抽屉。但是,当我拖动导航抽屉时,ActionBar会通过更改为箭头来响应此操作

这是我的密码:

服务\u活动\u main.xml

ServicesNavigationDrawerFragment.java

public class ServicesNavigationDrawerFragment extends Fragment {
    public final static String TAG = "ServicesNavigationDrawerFragment";

    String[] titles = {
            "String 1", // 0
            "String 2" // 1
    };

    int[] images = {
            R.drawable.service_build_license,
            R.drawable.service_build_license
    };

    private final static String STATE_SELECTED_POSITION = "SELECTED_POSITION";
    private final static String PREF_USER_LEARNED_DRAWER = "USER_LEARNED_DRAWER";

    private int selectedPosition = 0;
    private boolean fromSavedInstance;
    private boolean userLearnedDrawer;

    GridView drawerGridView;
    DrawerLayout drawerLayout;
    FrameLayout navigationDrawerLayout;
    ActionBarDrawerToggle drawerToggle;

    private NavigationDrawerCallbacks callbacks;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
        userLearnedDrawer = sharedPreferences.getBoolean(PREF_USER_LEARNED_DRAWER, false);

        if(savedInstanceState != null) {
            selectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
            fromSavedInstance = true;
        }
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        drawerGridView = (GridView) inflater.inflate(R.layout.services_fragment_navigation_drawer, container, false);

        drawerGridView.setAdapter(new ServicesAdapter(titles, images));

        drawerGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);
            }
        });

        return drawerGridView;
    }

    @Override
    public void onAttach(final Activity activity) {
        super.onAttach(activity);
        try {
            callbacks = (NavigationDrawerCallbacks) activity;
            drawerLayout = (DrawerLayout) activity.findViewById(R.id.activity_services_drawer_layout);
            navigationDrawerLayout = (FrameLayout) activity.findViewById(R.id.services_navigation_drawer_layout);

            drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

            ActionBar actionBar = getActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setHomeButtonEnabled(true);

            drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.string.app_name, R.string.app_name) {
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                    Log.i(TAG, "Drawer Closed!");

                    if (!isAdded()) {
                        return;
                    }

//                    activity.invalidateOptionsMenu();
                }

                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                    Log.i(TAG, "Drawer Opened!");

                    if (!isAdded()) {
                        return;
                    }

                    if( ! userLearnedDrawer) {
                        userLearnedDrawer = true;
                        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
                        sharedPreferences.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
                    }

//                    activity.invalidateOptionsMenu();
                }
            };

            if( ! userLearnedDrawer && ! fromSavedInstance) {
                drawerLayout.openDrawer(navigationDrawerLayout);
            }

            drawerLayout.post(new Runnable() {
                @Override
                public void run() {
                    drawerToggle.syncState();
                }
            });

            drawerLayout.setDrawerListener(drawerToggle);
        } catch(ClassCastException e) {
            throw new ClassCastException(activity.getClass() + " must implements NavigationDrawerCallbacks interface.");
        }
    }

    private ActionBar getActionBar() {
        return getActivity().getActionBar();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(STATE_SELECTED_POSITION, selectedPosition);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(drawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }

    private void selectItem(int position) {
        selectedPosition = position;

        if(drawerGridView != null) {
            drawerGridView.setItemChecked(position, true);
        }

        if(drawerLayout != null) {
            drawerLayout.closeDrawer(navigationDrawerLayout);
        }

        if(callbacks != null) {
            callbacks.onNavigationDrawerItemSelected(position);
        }
    }

    private class ServicesAdapter extends BaseAdapter {
        public final static String TAG = "ServicesAdapter";
        private Context context;

        private LayoutInflater inflater;

        private String[] titles;
        private int[] images;

        private ServicesAdapter(String[] titles, int[] images) {
            if(titles.length != images.length) {
                throw new RuntimeException("You Must Provide Same Number of Titles and Images.");
            }

            context = getActivity();
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            this.titles = titles;
            this.images = images;
        }

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public Object getItem(int position) {
            return titles[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView = null;

            if(convertView != null) {
                textView = (TextView) convertView;
            } else {
                textView = (TextView) inflater.inflate(R.layout.services_layout_drawer_item, parent, false);
            }

            Log.i(TAG, textView.getCompoundDrawables()[1].getBounds().toString());

            Drawable drawable = context.getResources().getDrawable(images[position]);
            drawable.setBounds(new Rect(0, 0, 128, 128));

            textView.setText(titles[position]);
            textView.setCompoundDrawables(null, drawable, null, null);

            return textView;
        }
    }

    public interface NavigationDrawerCallbacks {
        public void onNavigationDrawerItemSelected(int position);
    }
}
公共类服务navigationdrawerfragment扩展片段{
公共最终静态字符串TAG=“ServicesNavigationDrawerFragment”;
字符串[]标题={
“字符串1”,//0
“字符串2”//1
};
int[]图像={
R.drawable.service\u build\u许可证,
R.drawable.service\u build\u许可证
};
私有最终静态字符串状态\u SELECTED\u POSITION=“SELECTED\u POSITION”;
私有最终静态字符串PREF\u USER\u LEARNED\u DRAWER=“USER\u LEARNED\u DRAWER”;
private int selectedPosition=0;
私有布尔值来自savedinstance;
私有布尔userLearnedDrawer;
GridView-DrumerGridView;
抽屉布局抽屉布局;
框架布局导航抽屉布局;
ActionBarDrawerToggle抽屉切换;
私有导航抽屉回调回调;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(getActivity());
userLearnedDrawer=SharedReferences.getBoolean(PREF_USER_LEARNED_DRAWER,false);
如果(savedInstanceState!=null){
selectedPosition=savedInstanceState.getInt(STATE\u SELECTED\u POSITION);
fromSavedInstance=true;
}
}
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
DroperGridView=(GridView)充气器。充气(R.layout.services\u fragment\u navigation\u抽屉,容器,false);
setAdapter(新服务适配器(标题、图像));
DroperGridView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
选择项目(位置);
}
});
返回drawerGridView;
}
@凌驾
公共活动(最终活动){
超级转速计(活动);
试一试{
回调=(导航抽屉回调)活动;
抽屉布局=(抽屉布局)activity.findViewById(R.id.activity\u services\u抽屉布局);
navigationDrawerLayout=(FrameLayout)activity.findViewById(R.id.services\u navigation\u drawer\u layout);
drawerLayout.setDrawerShadow(R.drawable.drawer\u shadow,GravityCompat.START);
ActionBar ActionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(真);
DroperToggle=new ActionBarDrawerToggle(getActivity(),DroperLayout,R.string.app\u name,R.string.app\u name){
@凌驾
图纸上的公共空白已关闭(视图抽屉视图){
super.onDrawerClosed(抽屉视图);
Log.i(标记“抽屉已关闭!”);
如果(!isAdded()){
返回;
}
//activity.invalidateOptions菜单();
}
@凌驾
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
Log.i(标签“抽屉打开!”);
如果(!isAdded()){
返回;
}
如果(!userLearnedDrawer){
userLearnedDrawer=true;
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(活动);
SharedReferences.edit().putBoolean(PREF_USER_LEARNED_DRAWER,true).apply();
}
//activity.invalidateOptions菜单();
}
};
如果(!userLearnedDrawer&&!fromSavedInstance){
抽屉布局。打开抽屉(导航抽屉布局);
}
drawerLayout.post(新的Runnable(){
@凌驾
公开募捐{
drawerToggle.syncState();
}
});
抽屉布局。设置抽屉链接器(抽屉切换);
}catch(ClassCastException e){
抛出新的ClassCastException(activity.getClass()+“必须实现NavigationDrawerCallbacks接口”);
}
}
私有ActionBar getActionBar(){
返回getActivity().getActionBar();
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putInt(状态为所选位置,所选位置);
}
@凌驾
在PrepareOptions功能表(菜单)上公共作废{
super.onPrepareOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
如果(抽屉切换选项项选定(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
私有void selectItem(内部位置){
selectedPosition=位置;
如果(DroperGridView!=null){
DroperGridView.setItemChecked(位置,true);
}
if(抽屉布局!=null){
抽屉布局。关闭抽屉(导航抽屉布局);
}
if(回调!=null){
回调。onNavigationDrawerItemSelected(位置);
}
}
私有类ServicesAdapter扩展了基
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/services_navigation_drawer_gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="auto_fit"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:choiceMode="multipleChoice"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:background="#EEE" />
public class MainActivity
       extends Activity
       implements BaseControllerFragment.ControllerCallbacks,
                  ServicesNavigationDrawerFragment.NavigationDrawerCallbacks {
    public final static String TAG = "MainActivity";

    LinearLayout titleBarLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.services_activity_main);

        titleBarLayout = (LinearLayout) findViewById(R.id.title_bar_layout);

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().add(R.id.services_navigation_drawer_layout,
                new ServicesNavigationDrawerFragment(),
                TAG + "." + ServicesNavigationDrawerFragment.TAG).commit();
    }

    @Override
    public void updateTitleBar(View view) {
        titleBarLayout.removeAllViews();
        titleBarLayout.addView(view);
        titleBarLayout.invalidate();
    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
        switch (position) {
            case 0:
                replaceContainerContents(new BuildLicenseControllerFragment());
                return;
            case 1:
                replaceContainerContents(new BuildLicenseControllerFragment());
                return;
        }
    }

    private void replaceContainerContents(BaseControllerFragment controllerFragment) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.contents_layout,
                controllerFragment,
                TAG + "." + controllerFragment.TAG).commit();
    }
}
public class ServicesNavigationDrawerFragment extends Fragment {
    public final static String TAG = "ServicesNavigationDrawerFragment";

    String[] titles = {
            "String 1", // 0
            "String 2" // 1
    };

    int[] images = {
            R.drawable.service_build_license,
            R.drawable.service_build_license
    };

    private final static String STATE_SELECTED_POSITION = "SELECTED_POSITION";
    private final static String PREF_USER_LEARNED_DRAWER = "USER_LEARNED_DRAWER";

    private int selectedPosition = 0;
    private boolean fromSavedInstance;
    private boolean userLearnedDrawer;

    GridView drawerGridView;
    DrawerLayout drawerLayout;
    FrameLayout navigationDrawerLayout;
    ActionBarDrawerToggle drawerToggle;

    private NavigationDrawerCallbacks callbacks;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
        userLearnedDrawer = sharedPreferences.getBoolean(PREF_USER_LEARNED_DRAWER, false);

        if(savedInstanceState != null) {
            selectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
            fromSavedInstance = true;
        }
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        drawerGridView = (GridView) inflater.inflate(R.layout.services_fragment_navigation_drawer, container, false);

        drawerGridView.setAdapter(new ServicesAdapter(titles, images));

        drawerGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);
            }
        });

        return drawerGridView;
    }

    @Override
    public void onAttach(final Activity activity) {
        super.onAttach(activity);
        try {
            callbacks = (NavigationDrawerCallbacks) activity;
            drawerLayout = (DrawerLayout) activity.findViewById(R.id.activity_services_drawer_layout);
            navigationDrawerLayout = (FrameLayout) activity.findViewById(R.id.services_navigation_drawer_layout);

            drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

            ActionBar actionBar = getActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setHomeButtonEnabled(true);

            drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.string.app_name, R.string.app_name) {
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                    Log.i(TAG, "Drawer Closed!");

                    if (!isAdded()) {
                        return;
                    }

//                    activity.invalidateOptionsMenu();
                }

                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                    Log.i(TAG, "Drawer Opened!");

                    if (!isAdded()) {
                        return;
                    }

                    if( ! userLearnedDrawer) {
                        userLearnedDrawer = true;
                        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
                        sharedPreferences.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
                    }

//                    activity.invalidateOptionsMenu();
                }
            };

            if( ! userLearnedDrawer && ! fromSavedInstance) {
                drawerLayout.openDrawer(navigationDrawerLayout);
            }

            drawerLayout.post(new Runnable() {
                @Override
                public void run() {
                    drawerToggle.syncState();
                }
            });

            drawerLayout.setDrawerListener(drawerToggle);
        } catch(ClassCastException e) {
            throw new ClassCastException(activity.getClass() + " must implements NavigationDrawerCallbacks interface.");
        }
    }

    private ActionBar getActionBar() {
        return getActivity().getActionBar();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(STATE_SELECTED_POSITION, selectedPosition);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(drawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }

    private void selectItem(int position) {
        selectedPosition = position;

        if(drawerGridView != null) {
            drawerGridView.setItemChecked(position, true);
        }

        if(drawerLayout != null) {
            drawerLayout.closeDrawer(navigationDrawerLayout);
        }

        if(callbacks != null) {
            callbacks.onNavigationDrawerItemSelected(position);
        }
    }

    private class ServicesAdapter extends BaseAdapter {
        public final static String TAG = "ServicesAdapter";
        private Context context;

        private LayoutInflater inflater;

        private String[] titles;
        private int[] images;

        private ServicesAdapter(String[] titles, int[] images) {
            if(titles.length != images.length) {
                throw new RuntimeException("You Must Provide Same Number of Titles and Images.");
            }

            context = getActivity();
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            this.titles = titles;
            this.images = images;
        }

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public Object getItem(int position) {
            return titles[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView = null;

            if(convertView != null) {
                textView = (TextView) convertView;
            } else {
                textView = (TextView) inflater.inflate(R.layout.services_layout_drawer_item, parent, false);
            }

            Log.i(TAG, textView.getCompoundDrawables()[1].getBounds().toString());

            Drawable drawable = context.getResources().getDrawable(images[position]);
            drawable.setBounds(new Rect(0, 0, 128, 128));

            textView.setText(titles[position]);
            textView.setCompoundDrawables(null, drawable, null, null);

            return textView;
        }
    }

    public interface NavigationDrawerCallbacks {
        public void onNavigationDrawerItemSelected(int position);
    }
}
      ActionBar actionBar = getActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setHomeButtonEnabled(true);

            drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.string.app_name, R.string.app_name) {
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                    Log.i(TAG, "Drawer Closed!");

                    if (!isAdded()) {
                        return;
                    }

//                    activity.invalidateOptionsMenu();
                }

                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                    Log.i(TAG, "Drawer Opened!");

                    if (!isAdded()) {
                        return;
                    }

                    if( ! userLearnedDrawer) {
                        userLearnedDrawer = true;
                        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
                        sharedPreferences.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
                    }

//                    activity.invalidateOptionsMenu();
                }
            };

            if( ! userLearnedDrawer && ! fromSavedInstance) {
                drawerLayout.openDrawer(navigationDrawerLayout);
            }

            drawerLayout.post(new Runnable() {
                @Override
                public void run() {
                    drawerToggle.syncState();
                }
            });

            drawerLayout.setDrawerListener(drawerToggle);
        } catch(ClassCastException e) {
            throw new ClassCastException(activity.getClass() + " must implements NavigationDrawerCallbacks interface.");
        }
    }

    private ActionBar getActionBar() {
        return getActivity().getActionBar();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(STATE_SELECTED_POSITION, selectedPosition);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(drawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }a
mDrawerToggle = new ActionBarDrawerToggle(
            getActivity(),                    /* host Activity */
            mDrawerLayout,                    /* DrawerLayout object */
            R.drawable.ic_drawer,             /* nav drawer image to replace 'Up' caret */
            R.string.navigation_drawer_open,  /* "open drawer" description for accessibility */
            R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
    ) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            if (!isAdded()) {
                return;
            }

            getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if (!isAdded()) {
                return;
            }

            if (!mUserLearnedDrawer) {
                // The user manually opened the drawer; store this flag to prevent auto-showing
                // the navigation drawer automatically in the future.
                mUserLearnedDrawer = true;
                SharedPreferences sp = PreferenceManager
                        .getDefaultSharedPreferences(getActivity());
                sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
            }

            getActivity().invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
        }
    };