扩展基本活动时,Button上的NullPointerException

时间:2015-03-07 21:23:36

标签: android

我有一项活动,即NavigationDrawer活动,我正在进行另一项活动来扩展此活动。当我开始这个孩子活动时,我得到了着名的java.lang.NullPointerException

 Caused by: java.lang.NullPointerException
        at com.testapp.ShopActivity.onCreate(ShopActivity.java:23)

我不知道为什么会发生这种情况,因为我在onCreate()方法中以正确的方式完成了所有操作。我的完整ShopActivity类代码:

public class ShopActivity extends BaseDrawerActivity {



@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Button navButton = (Button)findViewById(R.id.nav);

   navButton.setOnClickListener(new View.OnClickListener() { //<-Line 23
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(), BaseDrawerActivity.class);
            startActivity(intent);
        }
    });

}

 @Override
public int getLayoutResourceId() {
    return R.layout.activity_shop;
}

}

不确定为什么会这样。没有按钮,ShopActivity工作正常并且有一个导航抽屉,与BaseDrawerActivity中的导航抽屉相同。我尝试过实施OnClickListener,但我得到了同样的错误

修改

这是oncreate()的{​​{1}}方法的内容:

BaseDrawerActivity

如果我更改@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base_drawer); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); mTitle = getTitle(); // Set up the drawer. mNavigationDrawerFragment.setUp( R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); } ,我会在setContentView(R.layout.activity_base_drawer);

上收到同样的错误

2 个答案:

答案 0 :(得分:0)

navButton为null。你永远不会加载布局。或者您可能在BaseDrawerActivity中执行此操作,但您的按钮不在布局中或具有不同的ID。

答案 1 :(得分:0)

正如其他人提到你的navButtonnull。最可能的原因是您没有打电话给setContentView()。除非在onCreate方法中,您BaseDrawerActivity的超级密度为setContentView(getLayoutResourceId()),否则就是这个原因。

要解决此问题,您需要显示超类BaseDrawerActivity的onCreate方法。没有这个,就不用多说了。

另外,发布activity_shop.xml

的内容