导航回到FragmentPagerAdapter,listFragment为空 [英] Navigating back to FragmentPagerAdapter the listFragment is empty
问题描述
重新加载片段后,我在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->片段为空 >
谢谢=)
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屋!