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();
}