【发布时间】:2016-04-12 02:07:11
【问题描述】:
我需要根据从服务器检索到的菜单 ID 数组禁用片段。我已经检索到菜单 ID,但我不知道如何替换该 ID 的等效片段。我需要使用fragmentmanager和fragmenttransaction吗?我不能在 FragmentStatePagerAdapter 中使用 getSupportFragmentManager 或 getFragmentManager。我以前使用过framelayout,但没有使用viewpager。请帮忙
这是我的代码
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
String tabName;
PreferencesHelper prefHelp;
final FragmentManager disablefm;
SharedPreferences disabledMenu;
SharedPreferences.Editor editor;
Context ctx;
public PagerAdapter(FragmentManager fm, int NumOfTabs, Context context) {
super(fm);
this.mNumOfTabs = NumOfTabs;
disablefm = fm;
ctx = context;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
CallFragment tab1 = new CallFragment();
return tab1;
case 1:
ChatFragment tab2 = new ChatFragment();
return tab2;
case 2:
RoomServiceMenu tab3 = new RoomServiceMenu();
return tab3;
case 3:
HouseKeepingFragment tab4 = new HouseKeepingFragment();
//MealFragment tab4 = new MealFragment();
return tab4;
case 4:
//dnd
DndFragment tab5 = new DndFragment();
return tab5;
case 5:
//open door
OpenDoorFragment tab6 = new OpenDoorFragment();
return tab6;
case 6:
ServiceFragment tab7 = new ServiceFragment();
return tab7;
case 7:
//chauffeur
ChauffeurFragment tab8 = new ChauffeurFragment();
return tab8;
case 8:
SpecialOfferFragment tab9 = new SpecialOfferFragment();
return tab9;
default:
return null;
}
}
private void loadPref(){
disabledMenu = PreferenceManager.getDefaultSharedPreferences(ctx);
int disabledmenuSize = Integer.parseInt(prefHelp.getPreferences("disable menu length"));
String disabledMenuarray[] = new String[disabledmenuSize];
Log.d("log1", "disabled menu len: "+disabledmenuSize);
for(int u = 0; u < disabledmenuSize; u++){
disabledMenuarray[u] = prefHelp.getPreferences("disabledMenuId"+u);
Log.d("log1", "disabled menu id# "+u+" id: "+Arrays.toString(disabledMenuarray));
if(Arrays.asList(disabledMenuarray).contains("20")){
Log.d("log1", "main | pref contain id 20");
//disable call fragment
}
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
【问题讨论】: