除了片段之外,我还想在我的导航抽屉中为活动添加一个过渡
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
Fragment fragment = null;
if (id == R.id.nav_camera) {
fragment = new MainFragment();
} else if (id == R.id.nav_gallery) {
fragment = new SecondFragment();
} else if (id == R.id.nav_slideshow) {
startActivity(new Intent(getApplicationContext(), MainActivity.class));
}
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
如果在遍历片段时没有问题,那么在转到 MainActivity 时会抛出错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
关键是您的方法中的代码在调用
startActivity(). 在该方法中,您将 null 分配给片段实例,然后不对其进行初始化(跳过相应的条件分支),然后(在调用第二个活动之后)尝试调用该片段,该片段为 null,您会得到一个错误。例如,您可以这样做: