私はActionBarSherlockを使用しています(これは基本的にAndroidサポートパッケージの拡張です)。
私がやろうとしていることは次のとおりです。
FragmentActivity
単一の をホストする がありますViewPager
。これViewPager
はFragmentStatePagerAdapter
(今後もいろいろ出てくるので)あります。しかし、今のところ、テスト用に 2 つのアイテムがロードされているだけです。
私が縦向きになっている間、すべてがうまく機能しています。しかし、横向きに変更すると、アダプターの最初のアイテムに戻ります (すべてがリロードされるため、これで問題ありません) が、次のアイテムにスワイプできません。何も起こらないだけです。
Loader
デバッグから、2 つのアイテムが正常に返されることがわかります。getItem(...)
もposition
0 と 1 で呼び出されます。したがって、そうでないことを除いて、基本的にすべてが正常に見えます ;)
ところで:横向きから始めて縦向きに切り替えると、同じことが逆に起こります。
ここで何が間違っているのでしょうか?
これが私のコードの一部です:
public class QuotesStatePagerAdapter extends FragmentStatePagerAdapter {
private List<Quote> mQuotes;
public QuotesStatePagerAdapter(FragmentManager fm, List<Quote> quotes) {
super(fm);
mQuotes = quotes;
}
@Override
public Fragment getItem(int position) {
Bundle arguments = new Bundle();
arguments.putSerializable("quote", mQuotes.get(position));
QuoteFragment fragment = new QuoteFragment();
fragment.setArguments(arguments);
return fragment;
}
@Override
public int getCount() {
return mQuotes.size();
}
}
public QuotesFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void updateOrdering(ORDERING newOrdering) {
mOrdering = newOrdering;
getLoaderManager().getLoader(0).startLoading();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.quotes, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setOnPageChangeListener(this);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<List<Quote>> onCreateLoader(int id, Bundle args) {
return new QuotesLoader(getActivity(), mCategoryId);
}
@Override
public void onLoadFinished(Loader<List<Quote>> loader, List<Quote> data) {
mQuotes = data;
mViewPager.setAdapter(new QuotesStatePagerAdapter(
getSupportFragmentManager(), mQuotes));
}