0

Acadmeyを含むコンテナフラグメントがあり、異なるviewpagerで構成されています。View pager の子フラグメントで、json リクエストを呼び出して、入力するデータを取得します。初めてすべてが正常に機能しますが、ビューページャーに戻って再び戻ると、すべてのコンテンツが消去され、初回のみ呼び出しが行われるため、ビューページャーのページは毎秒または n 回空白になります。開いた。再利用のために子フラグメントのコンテンツを保存するにはどうすればよいですか、またはビューページャーのすべての子フラグメントが再度開かれるたびに防御的に行われる方法です。viewpagerchild fragmentsmain activitychild fragmentonActivityCreatedcallbacked

私のコンテナフラグメント:-

  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);
}
}
4

1 に答える 1

0

ViewPagerの中で aを使用する場合は、の代わりにFragment使用する必要があります。ページャーのフラグメントは、親コンテキストではなく、コンテナー フラグメントの子です。getChildFragmentManager()getSupportFragmentManager()

于 2016-03-29T00:47:37.713 に答える