2012-04-29 75 views
2

我的代碼:安卓:使用savedInstanceState與片段錯誤

主要活動

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):引起:android.app.Fragment $ InstantiationException:無法實例化片段com.Android.Prj .DispKl $ ArrayListFragment:確保類名存在,是公共的,並且具有公共的空構造函數

爲什麼會這樣,我該如何解決它?

+0

你還可以發佈你的ArrayListFragment的代碼嗎? – kyp 2012-04-29 14:58:47

+0

你必須向下滾動才能看到它。我沒有粘貼onCreateView,因爲它只包含標準東西 – user1324936 2012-04-29 15:38:44

回答

2

如果ArrayListFragmentcom.Android.Prj.DispKl的內部類,則它需要是static。或者,將其轉移到它自己的公共Java類中。

順便說一句,請不要把代碼放在com.Android包中。請使用您自己的域名。

+0

謝謝你這樣 – user1324936 2012-04-29 21:32:44