java - 导航回 FragmentPagerAdapter,listFragment 为空

标签 java android android-fragments uipageviewcontroller fragmentpageradapter

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

有人知道这会发生吗?

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

调用 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;
    }

    }
}

使用ListFragment填充FragmentPageAdapter的代码

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

谢谢

最佳答案

我调查了这个问题并解决了问题...... 问题是:

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

为了解决这个问题:

FragmentPagerAdapter adapter = new GoogleMusicAdapter(getChildFragmentManager());

信息来源:

FragmentPagerAdapter inside Fragment

Navigating back to FragmentPagerAdapter -> fragments are empty

谢谢=)

关于java - 导航回 FragmentPagerAdapter,listFragment 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320232/

相关文章:

Java 反射 - 找不到 Android 类

java - 如何将从 HTTP GET 响应获取的文件保存在磁盘文件 java 上

android - EventBus 注释处理器在 AndroidStudio 3.1 中不接受 ThreadMode.MAIN_ORDERED

android - 如何以编程方式无意发送彩信

Android用另一个 fragment 替换当前 fragment

android - 导航组件 popBackStack() 是否保留 fragment 状态?

java - 如何 Intent 到android上的另一个页面/从空闲时间弹出一条消息?

java - 错误: Could not find or load main class Mac Eclipse

没有root的服务的Android屏幕截图

android - 应用程序中有效 fragment 的数量?