我有一项活动,即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);
答案 0 :(得分:0)
navButton为null。你永远不会加载布局。或者您可能在BaseDrawerActivity中执行此操作,但您的按钮不在布局中或具有不同的ID。
答案 1 :(得分:0)
正如其他人提到你的navButton
是null
。最可能的原因是您没有打电话给setContentView()
。除非在onCreate方法中,您BaseDrawerActivity
的超级密度为setContentView(getLayoutResourceId())
,否则就是这个原因。
要解决此问题,您需要显示超类BaseDrawerActivity
的onCreate方法。没有这个,就不用多说了。
另外,发布activity_shop.xml
。