我正在使用ActionBarSherlock(它基本上是Android Support Package的扩展)。
我想做的是:
我有一个FragmentActivity,它只托管一个ViewPager。这个ViewPager有一个FragmentStatePagerAdapter(因为将来会有很多项)。但是现在只有两个项目用于测试。
在纵向方向时一切正常。但是当我改变为横向方向时,它会切换回适配器中的第一个项目(这很好,因为所有内容都被重新加载等),但我无法滑动到下一个项目。什么也没有发生。
从调试中,我可以看到Loader很好地返回了两个项目。getItem(...)也使用位置0和1调用。所以基本上一切看起来都很好,除了它不是 ;)
顺便说一下:当我从横向方向开始并切换到纵向方向时,反之亦然。
这是我的一些代码:
我想做的是:
我有一个FragmentActivity,它只托管一个ViewPager。这个ViewPager有一个FragmentStatePagerAdapter(因为将来会有很多项)。但是现在只有两个项目用于测试。
在纵向方向时一切正常。但是当我改变为横向方向时,它会切换回适配器中的第一个项目(这很好,因为所有内容都被重新加载等),但我无法滑动到下一个项目。什么也没有发生。
从调试中,我可以看到Loader很好地返回了两个项目。getItem(...)也使用位置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));
}