如何通过检查userinfo列表来替换片段

时间:2018-04-18 06:41:29

标签: android

目前我在settingsfragment,我有另一个名为ProfileFragment的片段。现在问题是,通过userinfo list我需要替换fragmnet之类的。如果userinfo == null我应该在settingFragment或者我应该在ProfileFragment

if(userinfolist == null ){
        //login screen
        FragmentTransaction ft= getFragmentManager().beginTransaction();
        ft.replace(R.id.main_frame,settingsFragment);
        ft.commit();
    }else{
        //setting screen
        FragmentTransaction ft=getFragmentManager().beginTransaction();
        ft.replace(R.id.main_frame,profileFragment);
        ft.commit();
    }

但是当我执行代码时,我会陷入困境。

4 个答案:

答案 0 :(得分:1)

如果你的userinfo列表是arraylist,那么在代码下面使用,并确保你的两个片段都是定义的.. 然后在下面的代码中使用..

        List<User> userinfolist = new ArrayList<>();
    SettingsFragment settingsFragment = new SettingsFragment();
    ProfileFragment profileFragment = new ProfileFragment();
    if (userinfolist.isEmpty()) {
        //login screen
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.main_frame, settingsFragment);
        ft.commit();
    } else {
        //setting screen
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.main_frame, profileFragment);
        ft.commit();
    }

答案 1 :(得分:0)

您可以对推送片段的布局进行类型转换,然后使用layout.removeAllViews();清除布局视图,然后执行其余操作以附加片段,但默认情况下您需要附加一些内容我猜

答案 2 :(得分:0)

您可以创建一个常用的方法来替换更有效的片段,如下面的方法

   public void replaceFragment(Fragment fragment) {
        getSupportFragmentManager().beginTransaction().replace(R.id.main_frame, fragment);
    }

根据您的情况,您可以调用片段。在您的情况下,如果userinfolist是List,那么您可以使用下面的代码。

 if(userinfolist!=null&&userinfolist.size()>0)

    replaceFragment(new profileFragment(), false);
    else
        replaceFragment(new SettingFragment(),false);

答案 3 :(得分:0)

尝试使用下面的代码片段,初始化FragmentManager&amp; FragmentTransaction就足够了。

    FragmentManager fm = getFragmentManager();
    FragmentTransaction fragmentTransaction = fm.beginTransaction();

    List<User> userinfolist = new ArrayList<>();

    if (userinfolist == null) { 
        SettingsFragment settingsFragment = new SettingsFragment();
        fragmentTransaction.replace(R.id.main_frame,settingsFragment);

    } else {
        ProfileFragment profileFragment = new ProfileFragment();
        fragmentTransaction.replace(R.id.main_frame,profileFragment);
    }
    fragmentTransaction.commit();