我收到一个NullPointerException如果我离开FragmentActivity和去ListActivity。 其实,我开始看到名单之前,我力闭合。 但logcat的是指我所来自的活动。
在logcat中这样说:
08-31 07:38:53.356: E/AndroidRuntime(8134): FATAL EXCEPTION: main
08-31 07:38:53.356: E/AndroidRuntime(8134): java.lang.NullPointerException
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
08-31 07:38:53.356: E/AndroidRuntime(8134): at com.---.myApp.MasterCat.onSaveInstanceState(MasterCat.java:119)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Activity.performSaveInstanceState(Activity.java:1137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1215)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3077)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3136)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.access$900(ActivityThread.java:142)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1235)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Handler.dispatchMessage(Handler.java:99)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.os.Looper.loop(Looper.java:137)
08-31 07:38:53.356: E/AndroidRuntime(8134): at android.app.ActivityThread.main(ActivityThread.java:4928)
08-31 07:38:53.356: E/AndroidRuntime(8134): at java.lang.reflect.Method.invokeNative(Native Method)
08-31 07:38:53.356: E/AndroidRuntime(8134): at java.lang.reflect.Method.invoke(Method.java:511)
08-31 07:38:53.356: E/AndroidRuntime(8134): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
08-31 07:38:53.356: E/AndroidRuntime(8134): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
08-31 07:38:53.356: E/AndroidRuntime(8134): at dalvik.system.NativeStart.main(Native Method)
在MasterCat 119线是:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}
我不知道显示,请让我知道还有什么其他的代码。 我的基本设置包含4个静态内部类是父内的所有片段FragmentActivity
(使用支持库)。 它使用标签和viewpager。
编辑,更多的代码:
public class MasterCat extends FragmentActivity implements
ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_layout);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager
.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
}
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment f = null;
switch (position) {
case 0:
{
f = new MasterFrag();
Bundle args = new Bundle();
f.setArguments(args);
break;
}
case 1:
{
f = new FeaturedFrag();
Bundle args = new Bundle();
f.setArguments(args);
break;
}
case 2:
{
f = new TopFrag();
Bundle args = new Bundle();
f.setArguments(args);
break;
}
case 3:
{
f = new NewFrag();
Bundle args = new Bundle();
f.setArguments(args);
break;
}
default:
throw new IllegalArgumentException("not this many fragments: "
+ position);
}
return f;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.mastercattab1).toUpperCase();
case 1:
return getString(R.string.mastercattab2).toUpperCase();
case 2:
return getString(R.string.mastercattab3).toUpperCase();
case 3:
return getString(R.string.mastercattab4).toUpperCase();
}
return null;
}
}
}
一个典型的片段具有这样的轮廓:
public static class FeaturedFrag extends Fragment {
public FeaturedFrag() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.rateithome, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}