不知怎的,我在这个方法中得到了一个空指针
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
actionBarToggle.syncState();
}
actionBarToggle.syncState()
在这里有一个空指针异常。
现在,如果我注释掉这个,那么当我触摸操作栏打开导航抽屉时会出现空指针异常
if (actionBarToggle.onOptionsItemSelected(item)) {
return true;
}
答案 0 :(得分:2)
我发现问题实际上是我在做这个
actionBarToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.drawerOpen, R.string.drawerClose) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle("Close");
ActivityCompat.invalidateOptionsMenu(activity);
}
public void onDrawerOpened(View main) {
getSupportActionBar().setTitle("Open");
ActivityCompat.invalidateOptionsMenu(activity);
}
};
drawerLayout.setDrawerListener(actionBarToggle);
drawerLayout = (DrawerLayout) findViewById(R.id.navigationDrawer);//This should be before actionBarToggle
所以我在actionBarToggle中使用了它后,我正在使用drawerLayout。
答案 1 :(得分:0)
按照此处的说明操作。
http://developer.android.com/training/implementing-navigation/nav-drawer.html
您的actionBarToggle对象为null。在尝试使用它之前,创建ActionBarDrawerToggle
并将其分配给您的变量。
答案 2 :(得分:0)
我也有NullPointerException。那是一个愚蠢的错误,我在做:
drawerToggle = new ActionBarDrawerToggle(this,
drawerLayout,
R.drawable.ic_drawer,
1,
2){ ... }
我通过说1,2来硬编码这两个字符串的可访问性,因为我发现这些字符串不重要。就我运行Android 2.3-4.3而言一切正常,但在4.4我得到了一个例外。 解决方案很简单:只需在values / strings.xml
中创建这两个字符串即可对不起我的英文:)