Acadmey
を含むコンテナフラグメントがあり、異なるviewpager
で構成されています。View pager の子フラグメントで、json リクエストを呼び出して、入力するデータを取得します。初めてすべてが正常に機能しますが、ビューページャーに戻って再び戻ると、すべてのコンテンツが消去され、初回のみ呼び出しが行われるため、ビューページャーのページは毎秒または n 回空白になります。開いた。再利用のために子フラグメントのコンテンツを保存するにはどうすればよいですか、またはビューページャーのすべての子フラグメントが再度開かれるたびに防御的に行われる方法です。viewpager
child fragments
main activity
child fragment
onActivityCreated
callbacked
私のコンテナフラグメント:-
public class Academy extends Fragment {
ViewPager viewPager = null;
TabLayout tabLayout;
MyViewPagerAdapter adapter;
private String myString = "hello";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("xx", "view started .............. papa");
return inflater.inflate(R.layout.academy, container, false);
}
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tabLayout = (TabLayout) getActivity().findViewById(R.id.tablayoutacademy);
viewPager = (ViewPager) getActivity().findViewById(R.id.academypager);
adapter = new MyViewPagerAdapter(getActivity().getSupportFragmentManager());
adapter.addfragment(new FragmentCourse(), "COURSES");
adapter.addfragment(new FragmentEducator(), "EDUCATORS");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
}
My Viewpager Child Fragment(コース)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("xx", "view course started...........................");
progress=new ProgressDialog(getContext());
progress.setMessage("Nukeing..");
progress.show();
return inflater.inflate(R.layout.fragmentcourse, container, false);
}
@Override
public void onActivityCreated(Bundle jhoola2) {
super.onActivityCreated(jhoola2);
Log.d("xx", "acti cource started");
recyclerView = (RecyclerView) getActivity().findViewById(R.id.rv2);
manager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MyImageCompress ic=new MyImageCompress();
Bundle bundle=new Bundle();
bundle=msg.getData();
title1 = bundle.getStringArrayList("C_name");
dec1=bundle.getStringArrayList("Discription");
image1=bundle.getStringArrayList("Image");
for (int i = 0; i < image1.size(); i++) {
imageArray1.add(ic.StringToBitMap(image1.get(i)));
Log.d( "handleMessage: "," Final parse" +i);
}
Log.d("handleMessage: EDU ", title1.size() + "" + dec1.size() + imageArray1.size());
adapter = new RecyclerAdaptra(title1, dec1, imageArray1);
progress.hide();
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
};
GetCources gc= new GetCources(url,handler);
gc.executeRequest();
}
}
*私のViewPagerアダプター*
class MyViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
ArrayList<String> tabtitles = new ArrayList<String>();
public void addfragment(Fragment fragments, String titles) {
this.fragments.add(fragments);
this.tabtitles.add(titles);
}
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabtitles.get(position);
}
}