更新2:すべてのv4サポート参照を取り除くことで解決しました。 更新:何がこの動作を引き起こすかを見るために、最初から始めました。私は場所のアクセス許可のチェックを追加すると発生します。私は後方に行くことはできません - 間違っているFragmentStatePagerAdapgerを使用しているすべてのパーミッションコードを取り除いても。FragmentStatePagerAdapter getItemへの最初の呼び出しがsdkで間違っている22 - > 23アップグレード
私は、appcompat-v7:23.2.1を使用して、compileSdkVersionとtarget SdkVersionを22から23に変更するまで、動的に作成されたフラグメントのViewPagerで正常に機能していたFragementStatePagerAdapterを持っています。今、私がA、B、Cをロードしようとすると、B、B、Cが読み込まれます。しかし、次にスワイプすれば、C、B、Aが得られます。それはうまくいかない。ここで
は、私は私のアダプターとviewpagerを設定する方法である:
myAdapter = new MyAdapter(getSupportFragmentManager(), numItems);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(myAdapter);
viewPager.setCurrentItem(position);
MyAdapter:
private class MyAdapter extends FragmentStatePagerAdapter {
private final int size;
public MyAdapter(FragmentManager fm, int _size) {
super(fm);
size = _size;
}
@Override
public int getCount() {
return size;
}
@Override
public Fragment getItem(int position) {
String _id = myArray[position];
return MyFragment.newInstance(_id);
}
}
とフラグメントをインスタンス化:
public static MyFragment newInstance(String _id) {
final MyFragment f = new MyFragment();
final Bundle args = new Bundle();
args.putString("_id", _id);
f.setArguments(args);
return f;
}
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_id = getArguments().getString("_id");
}
アップグレード後に誰かがこれを経験しましたか?私は何時間もこの車輪を回転させた後に全力を失っている。 FragmentStatePagerAdapter
由来のアダプタで、FragmentManager
代わりのSupportFragmentManager
を使用しよう:コメントは、問題を解決して、私が投稿
私のプロジェクトでsimularコードを素早くチェックした後のちょっとしたアイデア。 SupportFragmentManagerが必要ですか?私はストレートFragmentManagerを使用し、最近のappcompatとSDK 23のためにうまく動作します... –
それを固定した聖なる牛。はい!!答えとしてこれを入れ、私はそれを受け入れます。 –