2012-04-29 6 views
2

私のコードでsavedInstanceStateを使用して:(ユーザーが終わっ開始したときなど)savedInstanceStateがnullの場合はアンドロイド:フラグメントエラー

主な活動

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; 
    } 

すべてがOKに動作します。 しかし、私はこの例外を取得しないときにはnull:

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

なぜそれが問題なのですか?

+0

ArrayListFragmentのコードを投稿することもできますか? – kyp

+0

あなたはそれを見るために下にスクロールする必要があります。私はそれに標準的なものだけを含んでいるので、私はonCreateViewを貼り付けていませんでした – user1324936

答えて

2

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

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

+0

ありがとうthatsそれ – user1324936

関連する問題