Я использую ABS и ViewPagerIndicatior. У меня есть три фрагмента с пользовательским списком в пейджере моего представления, который заполняет пользовательский адаптер. Теперь, когда я изменить ориентацию от земли к порту, или наоборот, onActivityCreated снова вызывает при изменении ориентации и взглядов воссоздать сноваSlidingFragmentActivity: как сохранить экземпляр представления пейджера с другим фрагментом
Основной вид деятельности: UI
public class MyActivity extends SlidingFragmentActivity implements ViewPager.OnPageChangeListener{
protected SliderLeft sliderLeft;
protected SliderRight sliderRight;
ActionBar mActionBar;
ViewPager mViewPager;
TitlePageIndicator mPageIndicator;
FragmentPagerAdapter mPagerAdapter;
SubMenu subMenu1;
private Menu mainMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// set the Behind View
setBehindContentView(R.layout.slider_menu_frame);
// customize the SlidingMenu
SlidingMenu sm = getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setShadowDrawable(R.drawable.shadowleft);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
//int heightOfScreen = metrics.heightPixels;
int width = metrics.widthPixels;
sm.setBehindWidth(width/2); //sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
setSlidingActionBarEnabled(true);
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
mActionBar = getSupportActionBar();
// set viewPager and viewPagerIndicator
mViewPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setOnPageChangeListener(this);
mPageIndicator = (TitlePageIndicator) findViewById(R.id.indicator);
mPageIndicator.setOnPageChangeListener(this);
mPageIndicator.setViewPager(mViewPager);
mPageIndicator.setCurrentItem(1);
}
}
моего приложения действует так же, как Yahoo ответ приложение.
Пейджер адаптер мнение:
public class FragmentPagerAdapter extends FragmentStatePagerAdapter {
public FragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
switch (i){
case 0:
Fragment_Review fragment_review = new Fragment_Review();
Bundle args0 = new Bundle();
args0.putInt(Fragment_Activities.ARG_OBJECT, i);
fragment_review.setArguments(args0);
fragment = fragment_review;
break;
case 1:
Fragment fragment_activities = new Fragment_Activities();
Bundle args1 = new Bundle();
args1.putInt(Fragment_Activities.ARG_OBJECT, i);
fragment_activities.setArguments(args1);
fragment = fragment_activities;
break;
case 2:
Fragment_Answer fragment_answerit = new Fragment_Answer();
Bundle args2 = new Bundle();
args2.putInt(Fragment_Activities.ARG_OBJECT, i);
fragment_answerit.setArguments(args2);
fragment = fragment_answerit;
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
CharSequence pageTitle = "";
switch (position){
case 0:
pageTitle = "tiile";
break;
case 1:
pageTitle = "title";
break;
case 2:
pageTitle = "tille";
break;
}
return pageTitle;
}
}
все фрагмент внутри вид пейджера простирается от SherlockFragment.
public class Fragment_Review extends SherlockFragment implements PullToRefreshBase.OnRefreshListener<ListView> {
private List<Data> allData;
private CustomListAdapter customListAdapter;
private PullToRefreshListView mPullRefreshListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_ptr_list_fragment, container, false);
mPullRefreshListView = (PullToRefreshListView) v.findViewById(R.id.pull_to_refresh_listview);
progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
allData = new ArrayList<Data>();
mPullRefreshListView.setMode(PullToRefreshBase.Mode.PULL_UP_TO_REFRESH);
customListAdapter = new CustomListAdapter(getActivity(), allData);
mPullRefreshListView.setOnRefreshListener(this);
mPullRefreshListView.setAdapter(lazyQuestionListAdapter);
new GetData().execute(getString(R.string.url) + "get_data.php");
}
}
при получении данных с сервера адаптер будет обновляться.
, пожалуйста, расскажите мне, как сохранить экземпляр всего фрагмента в изменении ориентации.
ТНХ, но вид воссоздан снова –
Да, но это нормально. Если вы хотите избежать этого, вы должны добавить android: configChanges = "orientation | screenSize" для этого действия в вашем манифесте ... – Pauland
Спасибо, что моя проблема решена. Я проверил ваш ответ –