Android:使用带有 fragment 错误的savedInstanceState

标签 android

我的代码:

主要 Activity

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 为空时(例如当用户重新开始时)一切正常。 但是当不为空时我得到这个异常:

04-29 14:10:00.398: E/AndroidRuntime(29348): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.Android.Prj.DispKl$ArrayListFragment: 确保类名存在,是公开的,并且有一个公开的空构造函数

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

最佳答案

如果ArrayListFragmentcom.Android.Prj.DispKl的内部类,它需要是static。或者,将其移动到自己单独的公共(public) Java 类中。

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

关于Android:使用带有 fragment 错误的savedInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373131/

相关文章:

android - 从资源中删除可绘制对象

java - 强制我的 Activity 调用 onSaveInstanceState

android - SQLite: No Such Table Error Android P问题

android - 创建地 block 对象的副本

android - 在Android Eclipse项目中导入OpenCV

java - 为什么按钮的 Intent 不起作用

android - 如何为 android 和 iphone 创建自己的 Magento 移动应用程序

android - 我可以将 cookie 值从移动网站传递到应用程序吗,反之亦然

android - 如何限制在 PhoneGap 上捕获视频的持续时间?

java - Android蓝牙数据传输使用Handler