ورود

View Full Version : مشکل در onSaveInstanceState



slr560
جمعه 17 مرداد 1393, 10:45 صبح
سلام دوستان
من نیاز دارم وقتی یه فرگمنت onPuase شد کل فرگمنت رو وضعیتشو ذخیره کنم و در موقع onResume اون رو بازیابی کنم
از دوستان کسی تجربه کار رو داره؟
باید از putFragment استفاده بشه

slr560
جمعه 17 مرداد 1393, 18:32 عصر
کسی مشکل منو نداره؟

parvizwpf
جمعه 17 مرداد 1393, 20:19 عصر
مشکلتون با saveInstance چیه؟

slr560
جمعه 17 مرداد 1393, 20:38 عصر
آقا داستان از این قراره که ۲تا فرگمنت دارم . توی یکی از این فرگمنت ها یه ViewPager با ۴تا صفحه هست . که هر صفحه خودش یه فرگمنت هست
تو یگی دیگه هم یه ViewPager هست که ۶تا صفحه داره. بازم هم مث قبلی صفحه هاش هر کدوم فرگمنت هست

حاالا وقتی بار اول به هر کدوم سر میزنی همه چی اوکی هست. ولی وقتی از فرگمنت قبلی برمیگردی به فرگمنتت صفحه سفیده
به قول معروف وقتی onPause میشه اون وضعیت دخیره نمیشه. امیدوارم فهمیده باشید.

فرگمنت اولی:

package ir.darabifard.daneshjo;


import com.astuetz.PagerSlidingTabStrip;


import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


import ir.darabifard.daneshjo.otopages.CardManage;
import ir.darabifard.daneshjo.otopages.ChargeActivity;
import ir.darabifard.daneshjo.otopages.OtoFragment;
import ir.darabifard.daneshjo.otopages.ReportReserve;




public class ParentOtoFragment extends Fragment {




PagerSlidingTabStrip tabs;


ViewPager pager;


Adapter mAdapter;


Typeface font;




private String TITLES[] = {"اتوماسیون تغذیه", "شارژ حساب", "گزارش رزرو", "مدیر کارت"};


public ParentOtoFragment() {


}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {


ViewGroup viewGroup = (ViewGroup) inflater
.inflate(R.layout.parent_otofragment, container, false);


font = Typeface.createFromAsset(getActivity().getAssets() , "Yekan.ttf");


pager = (ViewPager) viewGroup.findViewById(R.id.pager_oto);
mAdapter = new Adapter(getFragmentManager());
pager.setAdapter(mAdapter);
tabs = (PagerSlidingTabStrip) viewGroup.findViewById(R.id.tabs_oto);


tabs.setViewPager(pager);
tabs.setTypeface(font, 0);
tabs.setIndicatorColorResource(R.color.text_color2 );
tabs.setTextSize(42);
tabs.setTextColorResource(R.color.text_color2);


return viewGroup;
}




private class Adapter extends FragmentPagerAdapter {


public Adapter(FragmentManager fm) {
super(fm);
}


@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}


@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return OtoFragment.newInstance();
case 1:
return ChargeActivity.newInstance();
case 2:
return ReportReserve.newInstance();
case 3:
return CardManage.newInstance();
default:
return OtoFragment.newInstance();
}
}


@Override
public int getCount() {
return TITLES.length;
}
}


}




فرگمنت دومی:


package ir.darabifard.daneshjo;


import com.astuetz.PagerSlidingTabStrip;


import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


import ir.darabifard.daneshjo.profilepage.BarnameWeek;
import ir.darabifard.daneshjo.profilepage.EntekhabVahed;
import ir.darabifard.daneshjo.profilepage.Karname;
import ir.darabifard.daneshjo.profilepage.ScoreTerm;
import ir.darabifard.daneshjo.profilepage.Shahriye;




public class ProFragment extends Fragment {


PagerSlidingTabStrip tabs;


ViewPager mPager;


Typeface font;


ParentOtoFragment mParentOtoFragment;


private MyPagerAdapter adapter;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootViewGroup = (ViewGroup) inflater
.inflate(R.layout.pro_fragment, container, false);


mParentOtoFragment = new ParentOtoFragment();
mParentOtoFragment.onDestroyView();


font = Typeface.createFromAsset(getActivity().getAssets() , "Yekan.ttf");


mPager = (ViewPager) rootViewGroup.findViewById(R.id.pager);
adapter = new MyPagerAdapter(getFragmentManager());
mPager.setAdapter(adapter);


tabs = (PagerSlidingTabStrip) rootViewGroup.findViewById(R.id.tabs);
tabs.setViewPager(mPager);
tabs.setTypeface(font, 0);
tabs.setIndicatorColorResource(R.color.text_color2 );
tabs.setTextSize(42);
tabs.setTextColorResource(R.color.text_color2);


return rootViewGroup;
}




private class MyPagerAdapter extends FragmentPagerAdapter {


private final String[] TITLES = {"برنامه هفتگی", "نمرات ترم جاری", "کارنامه", "انتخاب واحد",
"پرداخت شهریه"};




public MyPagerAdapter(FragmentManager fm) {
super(fm);
}


@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];


}


@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return BarnameWeek.newInstance();
case 1:
return ScoreTerm.newInstance();
case 2:
return Karname.newInstance();
case 3:
return EntekhabVahed.newInstance();
case 4:
return Shahriye.newInstance();
default:
return BarnameWeek.newInstance();
}


}


@Override
public int getCount() {
return TITLES.length;
}
}


}




اینم بگم از نویگیشن دروار استفاده میکنم

slr560
جمعه 17 مرداد 1393, 21:51 عصر
کسی نیست منو راهنمایی کنه؟

slr560
شنبه 18 مرداد 1393, 01:52 صبح
مشکل رفع شد.
به جای getFragmentManager از getChildFragmentManager استفاده کردم درست شد