2012-04-29 83 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