Android比较两个片段

psv

当我更改一个片段时,我想将新片段与当前片段进行比较。如果它们相同,则不必更换它们。

我试过了

 public void displayFragment(Fragment fragment){
    FragmentManager fm = getSupportFragmentManager();
    Fragment currentFragment = fm.findFragmentById(R.id.content_frame);
    if(!currentFragment.equals(fragment))
        getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content_frame, fragment).commit();
}

但它不起作用,并且即使新的片段相同,片段也会被更改

一个解法 ?谢谢

编辑

解决方案 :

public void displayFragment(Fragment fragment){
    FragmentManager fm = getSupportFragmentManager();
    Fragment currentFragment = fm.findFragmentById(R.id.content_frame);
    if(!fragment.getClass().toString().equals(currentFragment.getTag())){
        getSupportFragmentManager()
        .beginTransaction()
        .addToBackStack(null)
        .replace(R.id.content_frame, fragment, fragment.getClass().toString()) // add and tag the new fragment
        .commit();
    }
}
体重

识别片段的一种方法是给它们加上标签:

public void displayFragment(Fragment fragment, String tag){
    FragmentManager fm = getSupportFragmentManager();
    Fragment currentFragment = fm.findFragmentById(R.id.content_frame);
    if(!tag.equals(currentFragment.getTag())
        getSupportFragmentManager()
        .beginTransaction()
        .addToBackStack(null)
        .replace(R.id.content_frame, fragment, tag) // add and tag the new fragment
        .commit();
}

编辑:psv的注释的替代版本,使用类名作为标记:

public void displayFragment(Fragment fragment){ 
    FragmentManager fm = getSupportFragmentManager();
    Fragment currentFragment = fm.findFragmentById(R.id.content_frame);
    if(!fragment.getClass().toString().equals(currentFragment.getTag()))
    { 
        getSupportFragmentManager()
        .beginTransaction()
        .addToBackStack(null)
        .replace(R.id.content_frame, fragment, fragment.getClass().toString()) // add and tag the new fragment
        .commit(); 
    }
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章