导航回到FragmentPagerAdapter,listFragment为空 [英] Navigating back to FragmentPagerAdapter the listFragment is empty

查看:91
本文介绍了导航回到FragmentPagerAdapter,listFragment为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

重新加载片段后,我在FragmentPageAdapter上看不到ListFrangment.我有一个带有3个选项的滑动菜单,当我单击一个选项时,FragmentPageAdapter的片段更改会在选项卡中加载ListFragment.问题开始当我再次单击相同的选项时...片段更改,但是加载的片段为空,任何列表...

有人知道这会发生吗?

代码是:是一个代码示例.

调用FragmentPageAdapter时的代码...

 公共类MyListaCompra扩展Fragment {查看gv;私有静态最终String [] CONTENT = new String [] {"Pendientes","Realizadas"};公共静态Intent newInstance(Activity activity,int pos){Intent intent = new Intent(活动,MyListaCompra.class);返回意图;}@Override公共无效onCreate(捆绑保存的InstanceState){//TODO自动生成的方法存根super.onCreate(savedInstanceState);}@Override公共视图onCreateView(LayoutInflater充气器,ViewGroup容器,捆绑的saveInstanceState){Log.i("Truiton FragmentList","CREO LA VISTA");gv = inflater.inflate(R.layout.inicio,container,false);gv.setBackgroundResource(android.R.color.white);FragmentPagerAdapter adapter = new GoogleMusicAdapter(getActivity().getSupportFragmentManager());ViewPager传呼器=(ViewPager)gv.findViewById(R.id.pager);pager.setAdapter(adapter);TabPageIndicator指标=(TabPageIndicator)gv.findViewById(R.id.indicator);indicator.setViewPager(pager);返回gv;}@Override公共无效onPause(){//TODO自动生成的方法存根super.onPause();Log.i("Truiton FragmentList","ESTOY EN PAUSE");}@Override公共无效onResume(){//TODO自动生成的方法存根super.onResume();Log.i("Truiton FragmentList","ESTOY EN RESUME");}@Override公共无效onDestroyView(){//TODO自动生成的方法存根super.onDestroyView();Log.i("Truiton FragmentList","VistaDestruida!");}@Overridepublic void onCreateOptionsMenu(Menu menu,MenuInflater inflater){//TODO自动生成的方法存根super.onCreateOptionsMenu(菜单,充气器);getActivity().getMenuInflater().inflate(R.menu.menu,menu);}类GoogleMusicAdapter扩展FragmentPagerAdapter {公共GoogleMusicAdapter(FragmentManager fm){超级(fm);}@Overridepublic Fragment getItem(int position){返回FragmentListaPendiente.init(position);}@Override公共CharSequence getPageTitle(int position){返回CONTENT [位置%CONTENT.length] .toUpperCase();}@Overridepublic int getCount(){返回CONTENT.length;}}} 

使用ListFragment为FragmentPageAdapter充气的代码

 公共类FragmentListaPendiente扩展了ListFragment {int fragNum;私有捆绑保存的状态= null;字符串arr [] = {"dates","exmple","1"};公共静态FragmentListaPendiente init(int val){FragmentListaPendiente truitonList = new FragmentListaPendiente();//提供val输入作为参数.Bundle args = new Bundle();args.putInt("val",val);truitonList.setArguments(args);返回truitonList;}@Override公共无效onCreate(捆绑保存的InstanceState){//TODO自动生成的方法存根super.onCreate(savedInstanceState);fragNum = getArguments()!= null吗?getArguments().getInt("val"):1;}@Override公共视图onCreateView(LayoutInflater充气器,ViewGroup容器,捆绑保存的实例状态){返回inflater.inflate(R.layout.list,null);}@Override公共无效onActivityCreated(捆绑保存的InstanceState){super.onActivityCreated(savedInstanceState);setListAdapter(new ArrayAdapter< String>(getActivity(),android.R.layout.simple_list_item_1,arr));this.getListView().setTextFilterEnabled(true);}@Override公共无效onSaveInstanceState(Bundle outState){//TODO自动生成的方法存根super.onSaveInstanceState(outState);}@Overridepublic void onListItemClick(ListView l,View v,int position,long id){Log.i("Truiton FragmentList",单击的项目:" + id);}} 

谢谢

解决方案

我对此问题进行了调查,并解决了该问题....问题是:

  FragmentPagerAdapter适配器=新的GoogleMusicAdapter(getActivity().getSupportFragmentManager()); 

为解决此问题:

  FragmentPagerAdapter适配器=新的GoogleMusicAdapter(getChildFragmentManager()); 

信息来源:

片段内部的FragmentPagerAdapter

导航回FragmentPagerAdapter->片段为空

谢谢=)

I don't see the ListFrangment on FragmentPageAdapter after reload the fragment. I have a sliding menu with 3 options, when I click a one options, the fragment change for FragmentPageAdapter and load the ListFragment in a tab. The problem starts When I click again in the same option... the fragment change but the loaded fragment is empty, any list...

Does anyone know that can happen?

the code is: is a code exemple..

The code on call a FragmentPageAdapter...

public class MyListaCompra extends Fragment  {

View gv;
private static final String[] CONTENT = new String[] {"Pendientes","Realizadas" };

public static Intent newInstance(Activity activity,int pos) {
    Intent intent = new Intent(activity, MyListaCompra.class);
    return intent;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
}


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

     Log.i("Truiton FragmentList", "CREO LA VISTA");
    gv = inflater.inflate(R.layout.inicio,container, false);

    gv.setBackgroundResource(android.R.color.white);        
    FragmentPagerAdapter adapter = new GoogleMusicAdapter(getActivity().getSupportFragmentManager());
    ViewPager pager = (ViewPager) gv.findViewById(R.id.pager);
    pager.setAdapter(adapter);

    TabPageIndicator indicator = (TabPageIndicator) gv.findViewById(R.id.indicator);
    indicator.setViewPager(pager);

    return gv;
}

@Override
public void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
       Log.i("Truiton FragmentList", "ESTOY EN PAUSE");

}
@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
      Log.i("Truiton FragmentList", "ESTOY EN RESUME");
}
@Override
public void onDestroyView() {
    // TODO Auto-generated method stub
    super.onDestroyView();
      Log.i("Truiton FragmentList", "VistaDestruida!");
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu, inflater);
    getActivity().getMenuInflater().inflate(R.menu.menu, menu);
}




class GoogleMusicAdapter extends FragmentPagerAdapter {
    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        return FragmentListaPendiente.init(position);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length].toUpperCase();
    }

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

    }
}

The code on inflate a FragmentPageAdapter with ListFragment

public class FragmentListaPendiente extends ListFragment{

int fragNum;

private Bundle savedState = null;

String arr[] = { "dates","exemple","1" };

public static FragmentListaPendiente init(int val) {
    FragmentListaPendiente truitonList = new FragmentListaPendiente();

    // Supply val input as an argument.
    Bundle args = new Bundle();
    args.putInt("val", val);
    truitonList.setArguments(args);

    return truitonList;
}

 @Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
     fragNum = getArguments() != null ? getArguments().getInt("val") : 1;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.list,null);

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, arr));
    this.getListView().setTextFilterEnabled(true);
}

@Override
public void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    Log.i("Truiton FragmentList", "Item clicked: " + id);
    }
}

Thanks

解决方案

I investigate for this question and I solve the problem.... the problem is:

FragmentPagerAdapter adapter = new GoogleMusicAdapter(getActivity().getSupportFragmentManager());

For solve this problem:

FragmentPagerAdapter adapter = new GoogleMusicAdapter(getChildFragmentManager());

information source:

FragmentPagerAdapter inside Fragment

Navigating back to FragmentPagerAdapter -> fragments are empty

Thanks =)

这篇关于导航回到FragmentPagerAdapter,listFragment为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆