Android 看不到ActionBar切换按钮

Android 看不到ActionBar切换按钮,android,android-actionbar,navigation-drawer,android-togglebutton,Android,Android Actionbar,Navigation Drawer,Android Togglebutton,即使在编码之后,我也无法在预览中看到切换按钮。我错过什么了吗 我想实现导航抽屉上的切换按钮,它将打开从右到左,再次点击它将关闭 下面是我的代码: public class entryActivity extends ActionBarActivity { private String[] mMenuItems; private DrawerLayout mDrawerLayout; private ListView mDrawerList; private Ac

即使在编码之后,我也无法在预览中看到切换按钮。我错过什么了吗

我想实现导航抽屉上的切换按钮,它将打开从右到左,再次点击它将关闭

下面是我的代码:

public class entryActivity extends ActionBarActivity {

    private String[] mMenuItems;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle actionBarDrawerToggle;
    private CharSequence mDrawerTitle;
    private CharSequence mTitle;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_entry);

        //https://developer.android.com/training/implementing-navigation/nav-drawer.html
        mMenuItems = getResources().getStringArray(R.array.menu_items);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

        // Set the adapter for the list view
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mMenuItems));
        ActionBar actionBar = getSupportActionBar();

        actionBar.setHomeButtonEnabled(true);


        actionBarDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                R.string.open,
                R.string.close
        ){
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle(mDrawerTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };

        mDrawerLayout.setDrawerListener(actionBarDrawerToggle);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if(actionBarDrawerToggle.onOptionsItemSelected(item)){
            return true;
        }

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


}
公共类entryActivity扩展了ActionBarActivity{
私有字符串[]项;
私人抽屉布局mDrawerLayout;
私有列表视图mDrawerList;
私人动作bardrawertoggle动作bardrawertoggle;
私有字符序列mDrawerTitle;
私有字符序列mTitle;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_条目);
//https://developer.android.com/training/implementing-navigation/nav-drawer.html
mMenuItems=getResources().getStringArray(R.array.menu\u items);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.left\u抽屉);
//设置列表视图的适配器
mDrawerList.setAdapter(新阵列适配器,
android.R.layout.simple_list_item_1,mMenuItems));
ActionBar ActionBar=getSupportActionBar();
actionBar.setHomeButtonEnabled(真);
actionBarDrawerToggle=新actionBarDrawerToggle(
这
mDrawerLayout,
R.string.open,
R.string.close
){
公共无效onDrawerClosed(视图){
super.onDrawerClosed(视图);
getActionBar().setTitle(mTitle);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
/**当抽屉处于完全打开状态时调用*/
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
getActionBar().setTitle(mDrawerTitle);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
};
mDrawerLayout.setDrawerListener(actionBarDrawerToggle);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
如果(actionBarDrawerToggle.onOptionsItemSelected(项目)){
返回true;
}
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}

在onCreate方法中设置此选项

actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
尝试按照
setHomeButtonEnabled()的方式添加


对于汉堡菜单选项:

您需要调用
actionBarDrawerToggle.syncState()


查看完整示例:

它显示了带有返回符号的按钮,但我希望它是汉堡包菜单。。按下按钮,应用程序崩溃。显示返回图标按钮并没有切换一个,点击该按钮,应用程序崩溃。它确实工作了,但当抽屉拉出时,应用程序停止工作。有什么例外?您正在使用支持库吗?尝试将
invalidateOptionsMenu()
更改为
supportInvalidateOptionsMenu()
不知道异常,但我的目标是API 16以上,因此它不会导致支持库问题。我尝试更新代码,但应用程序仍在崩溃。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}