【问题标题】:Android: using savedInstanceState with Fragment errorAndroid:使用带有片段错误的 savedInstanceState
【发布时间】:2012-04-30 00:00:59
【问题描述】:

我的代码:

主要活动

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

..
mAdapter = new MyAdapter(getFragmentManager());
            mPager = (ViewPager) findViewById(R.id.pager);
            mPager.setAdapter(mAdapter);
            mPager.setOnPageChangeListener(new MyPageChangeListener());


private class MyPageChangeListener extends
            ViewPager.SimpleOnPageChangeListener {
        @Override
        public void onPageSelected(int position) {
            focusedPage = position;
        }
    }

public class MyAdapter extends FragmentStatePagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return qNumberSum;
    }

    @Override
    public Fragment getItem(int position) {
        ArrayListFragment alf = new ArrayListFragment();
        return alf.newInstance(position);
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position,
            Object object) {
        ArrayListFragment alf = (ArrayListFragment) object;
        mCurrentView = alf.getView();

    }

}

public class ArrayListFragment extends Fragment {
    int mNum;


    /**
     * Create a new instance of CountingFragment, providing "num" as an
     * argument.
     */
    ArrayListFragment newInstance(int num) {
        ArrayListFragment f = new ArrayListFragment();

        // Supply num input as an argument.
        Bundle args = new Bundle();
        args.putInt("num", num);
        f.setArguments(args);

        return f;
    }

    /**
     * When creating, retrieve this instance's number from its arguments.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mNum = getArguments() != null ? getArguments().getInt("num") : 1;
    }

当 savedInstanceState 为 null 时(例如当用户重新开始时)一切正常。 但是当不为空时,我得到了这个异常:

04-29 14:10:00.398:E/AndroidRuntime(29348):原因:android.app.Fragment$InstantiationException:无法实例化片段 com.Android.Prj.DispKl$ArrayListFragment:确保类名存在,是公开的,并且有一个公开的空构造函数

为什么会这样,我该如何解决?

【问题讨论】:

  • 你也可以发布你的ArrayListFragment代码吗?
  • 您必须向下滚动才能看到它。我没有粘贴 onCreateView 因为它只包含标准的东西

标签: android


【解决方案1】:

如果ArrayListFragmentcom.Android.Prj.DispKl 的内部类,则它必须是static。或者,将其移动到自己独立的公共 Java 类中。

顺便说一句,请不要将代码放在com.Android 包中。请使用您自己的域名。

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 2021-06-07
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多