Android 带有片段问题的Viewpager
我使用了本文中所示的示例 它在纵向位置运行良好,但当我将手机转到横向位置时,它会强制关闭 任何帮助克服这个问题都将不胜感激,谢谢 ViewPageReSample 图像片段 细节片段 LogcatAndroid 带有片段问题的Viewpager,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我使用了本文中所示的示例 它在纵向位置运行良好,但当我将手机转到横向位置时,它会强制关闭 任何帮助克服这个问题都将不胜感激,谢谢 ViewPageReSample 图像片段 细节片段 Logcat 片段必须有一个空构造函数。要传递给片段的所有内容都已完成 @Override public Fragment getItem(int position) { Fragment fragment = null; Bundle args = new Bundle(); switch
片段必须有一个空构造函数。要传递给片段的所有内容都已完成
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
Bundle args = new Bundle();
switch (position) {
case 0:
fragment = new DetailFragment();
break;
case 1:
args.putInt("image",R.drawable.ic_launcher);
fragment = new ImageFragment();
fragment.setArguments(args);
break;
case 2:
args.putInt("image",R.drawable.five);
fragment = new ImageFragment();
fragment.setArguments(args);
break;
}
return fragment;
}
然后在片段中:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int imageID = getArguments().getInt("image");
}
查看您的logcat,确保类名存在,是公共的,并且有一个公共的空构造函数
public class DetailFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("Test", "hello");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.details, container, false);
TextView textView = (TextView) view.findViewById(R.id.detailsText);
textView.setText("Testing");
return view;
}
}
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.test.demo/com.test.demo.ViewPagerExample}:
android.support.v4.app.Fragment$InstantiationException: Unable to instantiate
fragment com.test.demo.ImageFragment:
make sure class name exists, is public, and has an empty constructor that is public
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2836)
at android.app.ActivityThread.access$1600(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to
instantiate fragment com.test.demo.ImageFragment:
make sure class name exists, is public, and has an empty constructor that is public
at android.support.v4.app.Fragment.instantiate(Fragment.java:413)
at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
at
android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1783)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:213)
at com.test.demo.ViewPagerExample.onCreate(ViewPagerExample.java:17)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 12 more
Caused by: java.lang.InstantiationException: com.test.demo.ImageFragment
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1409)
at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
... 18 more
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
Bundle args = new Bundle();
switch (position) {
case 0:
fragment = new DetailFragment();
break;
case 1:
args.putInt("image",R.drawable.ic_launcher);
fragment = new ImageFragment();
fragment.setArguments(args);
break;
case 2:
args.putInt("image",R.drawable.five);
fragment = new ImageFragment();
fragment.setArguments(args);
break;
}
return fragment;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int imageID = getArguments().getInt("image");
}