Android setRetain在片段内部的TableLayout中不起作用
我面临的是一个简单的问题。我在一个片段中有两个选项卡,两个选项卡都有Recyclerview,在单击项目时片段被更改。但在调用OnBackpress方法时,我丢失了以前的两个选项卡数据。这是我的mainfragment代码Android setRetain在片段内部的TableLayout中不起作用,android,android-fragments,fragment,android-tablayout,Android,Android Fragments,Fragment,Android Tablayout,我面临的是一个简单的问题。我在一个片段中有两个选项卡,两个选项卡都有Recyclerview,在单击项目时片段被更改。但在调用OnBackpress方法时,我丢失了以前的两个选项卡数据。这是我的mainfragment代码 tabLayout = (TabLayout) view.findViewById(R.id.tablayout); viewPager = (ViewPager) view.findViewById(R.id.viewpager); tabLayout.addTab(tab
tabLayout = (TabLayout) view.findViewById(R.id.tablayout);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout.addTab(tabLayout.newTab().setText("Completed"));
tabLayout.addTab(tabLayout.newTab().setText("Not Over"));
adapter = new PagerAdapter(getActivity().getSupportFragmentManager(), tabLayout.getTabCount());
tabLayout.setTabTextColors(ContextCompat.getColor(getActivity(), R.color.graytextcolor),
ContextCompat.getColor(getActivity(), R.color.toolBarPink));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
// tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
viewPager.setAdapter(adapter);
这是我的寻呼机
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment tab1 = new TabCompleteOrders();
return tab1;
case 1:
Fragment tab2 = new TabNotOver();
return tab2;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
这里是我的第一个选项卡片段类
public class TabCompleteOrders extends Fragment {
public RecyclerView recyclerView;
public ArrayList<ProductOrdersDetails> arrayList;
public ProgressBar pb;
public Utils utils;
public ProductOrderAdapter adapter;
public String pId;
public RecyclerView.LayoutManager mLayoutManager;
private Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tab_complete_orders, container, false);
pb = (ProgressBar) view.findViewById(R.id.progressBar);
recyclerView = (RecyclerView) view.findViewById(R.id.fragment_tab_complete_orders_recylerview);
mLayoutManager = new LinearLayoutManager(getActivity());
context = getActivity();
// getBundles();
init();
return view;
}
private void init() {
utils = new Utils(getActivity());
arrayList = new ArrayList<>();
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
adapter = new ProductOrderAdapter(getActivity(), arrayList, getActivity().getSupportFragmentManager(), Constant.COMPLETED);
recyclerView.setAdapter(adapter);
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(),
recyclerView, new ClickListener() {
@Override
public void onClick(View view, final int position) {
WriteSharePrefrence(getActivity(), ORDERID, arrayList.get(position).getOrderId());
WriteSharePrefrence(getActivity(), ORDERSTATUS, COMPLETED);
Fragment fragment = new OrderDetail();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.addToBackStack("orderDeliveryDetails");
ft.replace(R.id.activity_main_frame_layout, fragment).commit();
}
}));
}
公共类TabCompleteOrders扩展片段{
公共回收视图回收视图;
公共ArrayList ArrayList;
公共图书馆;
公共公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业公用事业;
公共产品订单适配器;
公共字符串pId;
public RecyclerView.LayoutManager mllayoutmanager;
私人语境;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u tab\u complete\u orders,container,false);
pb=(ProgressBar)view.findviewbyd(R.id.ProgressBar);
recyclerView=(recyclerView)view.findViewById(R.id.fragment\u tab\u complete\u orders\u recylerview);
mLayoutManager=新的LinearLayoutManager(getActivity());
context=getActivity();
//getBundles();
init();
返回视图;
}
私有void init(){
utils=新utils(getActivity());
arrayList=新的arrayList();
recyclerView.setLayoutManager(mLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
adapter=new ProductOrderAdapter(getActivity(),arrayList,getActivity().getSupportFragmentManager(),Constant.COMPLETED);
recyclerView.setAdapter(适配器);
recyclerView.addOnItemTouchListener(新的RecyclerTouchListener(getActivity()),
recyclerView,新建ClickListener(){
@凌驾
公共void onClick(视图,最终int位置){
WriteSharePrefrence(getActivity(),ORDERID,arrayList.get(position.getOrderId());
WriteSharePrefrence(getActivity(),ORDERSTATUS,COMPLETED);
Fragment Fragment=neworderdetail();
FragmentTransaction ft=getActivity().getSupportFragmentManager().beginTransaction();
ft.addToBackStack(“订单交付详细信息”);
ft.replace(R.id.activity_main_frame_布局,fragment).commit();
}
}));
}
因此,请帮助我如何在Backpress上获取以前的数据?在您的fragment onviewCreated方法中检查适配器数据。如果它不为null,则NotifyDataSetacheDokay我将进行检查,但当我从另一个片段返回时,我可以看到另一个静态的textView。因此,我认为设置这两个选项卡有任何问题。可能吗e?是否检查两个选项卡的适配器?是的,两个选项卡都有一个recyclerView和textView,但当我从下一个片段返回时,屏幕上没有显示任何内容,仅显示两个选项卡的标题。