我试图实现导航抽屉(based on this tutorial)。打开片段时出现NullPointerException与onItemClick
当抽屉中的物品被点击时,我想打开一个碎片。下面是我的一些MainActivity.java代码
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int editedPosition = position + 1;
Toast.makeText(MainActivity.this, "You selected item " + editedPosition, Toast.LENGTH_SHORT).show();
switch(position){
case 0:
Log.d("SWITCH", "Case 0");
if (!(getSupportFragmentManager().getFragments().get(0) instanceof NewLogFragment)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.contentFrame, Fragment
.instantiate(MainActivity.this, Fragments.ONE.getFragment()))
.commit();
}
break;
case 1:
if (!(getSupportFragmentManager().getFragments().get(0) instanceof LogFragment)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.contentFrame, Fragment
.instantiate(MainActivity.this, Fragments.ONE.getFragment()))
.commit();
}
break;
}
mDrawerLayout.closeDrawer(mDrawerList);
}
});
这里是我的activity_main.xml中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
app:popupTheme="@style/Theme.AppCompat"
app:theme="@style/ToolbarTheme" />
<!-- Main layout -->
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/contentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<!-- Nav drawer -->
<ListView
android:id="@android:id/list"
android:layout_width="305dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white" />
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
而且,这里是我的Fragments.java
public enum Fragments {
ONE(NewLogFragment.class),TWO(LogFragment.class);
final Class<? extends Fragment> fragment;
private Fragments(Class<? extends Fragment> fragment) {
this.fragment = fragment;
}
public String getFragment() {
return fragment.getName();
}}
当我跑,我得到
java.lang.NullPointerException at sleeping_vityaz.fivethreeone_trainer.MainActivity$1.onItemClick(MainActivity.java:117)
111行是th是线
`if (!(getSupportFragmentManager().getFragments().get(0) instanceof LogFragment)) {`
更多细节:
- MainActivity扩展ActionBarActivity
- 我的片段延伸
Fragment
(android.support.v4.app.Fragment)到处
那么,为什么我得到这个空指针异常?
编辑我应用了Rohit的建议,不再有任何错误。但是布局不会改变。什么可能是错的?
编辑@我想通了......没有在活动中首先添加片段......所以没有什么东西可以代替哦:) 谢谢大家!
可能重复[什么是空指针异常,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-我怎么办 - 修复它) – Simon 2015-01-09 19:54:18