私のコードで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であることを確認してください。
なぜそれが問題なのですか?
ArrayListFragmentのコードを投稿することもできますか? – kyp
あなたはそれを見るために下にスクロールする必要があります。私はそれに標準的なものだけを含んでいるので、私はonCreateViewを貼り付けていませんでした – user1324936