导航抽屉出错

时间:2013-10-13 11:07:30

标签: android navigation-drawer

不知怎的,我在这个方法中得到了一个空指针

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    actionBarToggle.syncState();
}

actionBarToggle.syncState()在这里有一个空指针异常。

现在,如果我注释掉这个,那么当我触摸操作栏打开导航抽屉时会出现空指针异常

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

3 个答案:

答案 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

中创建这两个字符串即可

对不起我的英文:)