【问题标题】:replace fragment in fragmentstatepageradapter替换片段状态页面适配器中的片段
【发布时间】: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;
    }
}

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    创建 NameFragment 扩展 Fragment

    import android.support.v4.app.Fragment;
    

    例子

    public class YourNameFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.your_name_xml_framgent, container, false);
    
    //Enter code here
    
    return root;
     }
    

    在 OnCreateView 是你可以写代码的地方

    【讨论】:

    【解决方案2】:

    嘿,我已经知道如何做我想做的事了。

    这是我的代码:

    public class PagerAdapter extends FragmentStatePagerAdapter {
        int mNumOfTabs;
        String tabName;
        PreferencesHelper prefHelp;
        FragmentManager disablefm;
        SharedPreferences disabledMenu;
        SharedPreferences.Editor editor;
    
        Context ctx;
        Boolean roomSrvOn, houseKeepOn, dndOn, doorOn, spaOn, chauffeurOn, offerOn, callOn;
    
        public PagerAdapter(FragmentManager fm, int NumOfTabs, Context context) {
            super(fm);
            this.mNumOfTabs = NumOfTabs;
            disablefm = fm;
            ctx = context;
            disabledMenu = PreferenceManager.getDefaultSharedPreferences(ctx);
            Log.d("log1", "pager ctx: "+ctx);
        }
    
        @Override
        public Fragment getItem(int position) {
            roomSrvOn = true;
            houseKeepOn = true;
            dndOn = true;
            doorOn = true;
            spaOn = true;
            chauffeurOn = true;
            offerOn = true;
            callOn = true;
            //disable menu
    
            prefHelp = new PreferencesHelper(ctx);
            int disabledmenuSize = ((MainActivity)ctx).disabledmenuSize;
            String disabledMenuarray[] = new String[disabledmenuSize];
            Log.d("log1", "pager | disabled menu len: "+disabledmenuSize);
            for(int u = 0; u < disabledmenuSize; u++){
    
                disabledMenuarray[u] = prefHelp.getPreferences("disabledMenuId"+u);
                Log.d("log1", "pager | disabled menu id# "+u+" id: "+Arrays.toString(disabledMenuarray));
                if(Arrays.asList(disabledMenuarray).contains("20")){
                    Log.d("log1", "pager | call disabled");
                    callOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("10")){
                    Log.d("log1", "pager | room service disabled");
                    roomSrvOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("8")){
                    Log.d("log1", "pager | house keeping disabled");
                    houseKeepOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("17")){
                    Log.d("log1", "pager | dnd disabled");
                    dndOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("14")){
                    Log.d("log1", "pager | open door disabled");
                    doorOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("11")){
                    Log.d("log1", "pager | spa disabled");
                    spaOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("19")){
                    Log.d("log1", "pager | chauffuer disabled");
                    chauffeurOn = false;
                }else if(Arrays.asList(disabledMenuarray).contains("18")){
                    Log.d("log1", "pager | offer disabled");
                    offerOn = false;
                }
            }
    
            switch (position) {
                case 0:
                    if(callOn == false){
                        DisabledFragment tab1 = new DisabledFragment();
                        return tab1;
                    }else {
                        CallFragment tab1 = new CallFragment();
                        return tab1;
                    }
    
                case 1:
                        ChatFragment tab2 = new ChatFragment();
                        return tab2;
                case 2:
                    if(roomSrvOn == false){
                        DisabledFragment tab3 = new DisabledFragment();
                        return tab3;
                    }else {
                        RoomServiceMenu tab3 = new RoomServiceMenu();
                        return tab3;
                    }
                case 3:
                    if(houseKeepOn == false){
                        DisabledFragment tab4 = new DisabledFragment();
                        return tab4;
                    }else {
                        HouseKeepingFragment tab4 = new HouseKeepingFragment();
                        //MealFragment tab4 = new MealFragment();
                        return tab4;
                    }
                case 4:
                    if(dndOn == false){
                        DisabledFragment tab5 = new DisabledFragment();
                        return tab5;
                    }else {
                        //dnd
                        DndFragment tab5 = new DndFragment();
                        return tab5;
                    }
                case 5:
                    if(doorOn == false){
                        DisabledFragment tab6 = new DisabledFragment();
                        return tab6;
                    }else {
                        //open door
                        OpenDoorFragment tab6 = new OpenDoorFragment();
                        return tab6;
                    }
                case 6:
                    if(spaOn == false){
                        DisabledFragment tab7 = new DisabledFragment();
                        return tab7;
                    }else {
                        ServiceFragment tab7 = new ServiceFragment();
                        return tab7;
                    }
                case 7:
                    if(chauffeurOn == false){
                        DisabledFragment tab8 = new DisabledFragment();
                        return tab8;
                    }else {
                        //chauffeur
                        ChauffeurFragment tab8 = new ChauffeurFragment();
                        return tab8;
                    }
                case 8:
                    if(offerOn == false){
                        DisabledFragment tab9 = new DisabledFragment();
                        return tab9;
                    }else {
                        SpecialOfferFragment tab9 = new SpecialOfferFragment();
                        return tab9;
                    }
                default:
                    return null;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多