2

私のコード:

主な活動

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の場合(たとえば、ユーザーが最初からやり直した場合)、すべてが正常に機能します。しかし、nullでない場合、この例外が発生します。

04-29 14:10:00.398:E / AndroidRuntime(29348):原因:android.app.Fragment $ InstantiationException:フラグメントcom.Android.Prj.DispKl $ ArrayListFragmentをインスタンス化できません:クラス名が存在することを確認してください。パブリックである空のコンストラクターがあります

なぜそうなのですか、どうすれば修正できますか?

4

1 に答える 1

2

ArrayListFragmentがの内部クラスである場合、はcom.Android.Prj.DispKlである必要がありますstatic。または、それを独自の個別のパブリックJavaクラスに移動します。

com.Androidところで、パッケージにコードを入れないでください。独自のドメイン名を使用してください。

于 2012-04-29T16:00:59.763 に答える