Android 安卓寻呼机暂停问题
我正在使用带有兼容性库的寻呼机构建一个应用程序。 每当我尝试暂停应用程序时(例如,当我回到桌面时),我的应用程序就会强制关闭 我从未遇到过这种类型的错误,因此,我不知道如何解决它 我将向您展示我的代码,而我确信您不必查看它:Android 安卓寻呼机暂停问题,android,pager,Android,Pager,我正在使用带有兼容性库的寻呼机构建一个应用程序。 每当我尝试暂停应用程序时(例如,当我回到桌面时),我的应用程序就会强制关闭 我从未遇到过这种类型的错误,因此,我不知道如何解决它 我将向您展示我的代码,而我确信您不必查看它: public class *** extends FragmentActivity { /** Called when the activity is first created. */ static final int NUM_ITEMS = 5;
public class *** extends FragmentActivity {
/** Called when the activity is first created. */
static final int NUM_ITEMS = 5;
static final int NUM_ACTUALITE = 0;
static final int NUM_SELECTION = 1;
static final int NUM_MULTIMEDIA = 2;
static final int NUM_FESTIVALIER = 3;
static final int NUM_***E = 4;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pager_layout);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case NUM_ACTUALITE:
return ActuFragment.newInstance();
case NUM_SELECTION:
return SelectionFragment.newInstance();
case NUM_MULTIMEDIA:
return MultimediaFragment.newInstance();
case NUM_FESTIVALIER:
return FestivalierFragment.newInstance();
case NUM_***E:
return ***eFragment.newInstance();
default:
return ActuFragment.newInstance();
}
}
}
还有我的日志:
02-15 11:48:03.902: E/AndroidRuntime(11601): FATAL EXCEPTION: main
02-15 11:48:03.902: E/AndroidRuntime(11601): java.lang.RuntimeException: Unable to pause activity {com.**.**/com.**.**.***Activity}: java.lang.NullPointerException
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.access$1700(ActivityThread.java:117)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.os.Looper.loop(Looper.java:130)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 11:48:03.902: E/AndroidRuntime(11601): at java.lang.reflect.Method.invoke(Method.java:507)
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-15 11:48:03.902: E/AndroidRuntime(11601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-15 11:48:03.902: E/AndroidRuntime(11601): at dalvik.system.NativeStart.main(Native Method)
02-15 11:48:03.902: E/AndroidRuntime(11601): Caused by: java.lang.NullPointerException
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Activity.performSaveInstanceState(Activity.java:1037)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1181)
02-15 11:48:03.902: E/AndroidRuntime(11601): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2336)
02-15 11:48:03.902: E/AndroidRuntime(11601): ... 12 more
地雷碎片:
public class ActuFragment extends Fragment {
public static ActuFragment newInstance() {
ActuFragment f = new ActuFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View mainView = inflater.inflate(R.layout.actualites_layout,
container, false);
return mainView;
}
}
我在使用ActionBarSherlock兼容性库时也遇到了同样的问题。解决方法是,您的适配器扩展了
FragmentStatePagerAdapter
,而不是FragmentPagerAdapter
,相反,您可以在使用Tab+Fragment+ViewPager+FragmentStatePagerAdapter时遵循我之前针对NPE相关问题发布的解决方法
我希望同样的解决方案也适用于您尝试mu答案基本上覆盖onSaveInstanceState,在包中至少放一个值。“对所有片段执行操作”您使用片段的方式一定有问题。你有没有试过在没有碎片的情况下做这件事?是的,而且似乎效果很好。你不想看到我代码中的其他部分吗?我错过了阅读你的答案,不,我没有试过没有片段,事实上我确信这是不可能的。但我还是需要它们。我已经添加了一个片段,它们看起来都很相似。我猜您的一个片段在保存实例步骤中有问题。尝试删除除默认片段以外的所有片段,并查看是否仍然发生错误。如果没有,请一次添加一个,看看是哪些片段导致了问题。请参阅此链接,谢谢!在一个片段中添加WebView后开始出现问题。在更改为FragmentStatePagerAdapter后,它对我有效。谢谢你花了几个小时在这上面!非常感谢你!