我有一个名为QuoteFragment的片段,我将在其中显示引号。我创建了一个名为QuoteViewPager的活动,它将托管QutoeFragment。我有另一个活动和片段为列表视图的相同报价。如果用户在视图寻呼机中位于引号#50中,并且如果它们转到列表视图并再次返回查看寻呼机,那么查看寻呼机将从报价#1开始显示。我想从Qutoe#50开始显示视图寻呼机。以下方式我试了但是没有用。 在我的片段类中:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(PAGE_ITEM((QuoteViewPager)getActivity()).getViewPager().getCurrenttem());
}
这里getViewPager在我的QuoteViewPager扩展FragmentActivity类中有以下代码:
public ViewPager getViewPager(){
if(quoteViewPager == null){
quoteViewPager = new ViewPager(this);
quoteViewPager.setId(R.id.quoteViewPager);
}
return quoteViewPager;
}
在onCreate(Bundle saveInstanceState)中的相同片段中,我输入了以下代码:
if(savedInstanceState != null){
((QuoteViewPager)getActivity()).getViewPager().setCurrentItem(savedInstanceState.getInt(PAGE_ITEM,0));
}
当我调试它时,我发现我的PAGE_ITEM有50个值,但在onCreate方法中savedInstanceState始终为null。 有人可以帮我这个吗?
答案 0 :(得分:1)
首先,您需要将值设置为Bundle
中的键值对。
并覆盖onRestoreInstanceState
以恢复状态
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("quoteNumber", PAGE_ITEM((QuoteViewPager)getActivity()).getViewPager().getCurrenttem());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int quoteNumber = savedInstanceState.getInt("quoteNumber");
}