如何通过代码设置Fragment标签?

| 我没有在
Fragment
类中找到类似
setTag(String tagName)
方法的东西。设置我发现的
Fragment
标记的唯一方法是执行
FragmentTransaction
并将标记名作为参数传递。 这是通过代码显式设置“ 1”标签的唯一方法吗?     
已邀请:
        是。因此,唯一的方法是在交易时间,例如使用
add
replace
或作为布局的一部分。 我通过检查兼容性源来确定这一点,因为在过去的某个时候我短暂地寻找了类似的源。     
        您可以通过以下方式将标签设置为片段:
Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
    .replace(R.id.MainFrameLayout,fragmentA,\"YOUR_TARGET_FRAGMENT_TAG\")
    .addToBackStack(\"YOUR_SOURCE_FRAGMENT_TAG\").commit(); 
    
        您可以在活动布局xml文件中提供标签。 \“为android:tag属性提供唯一的字符串。” 就像您在布局xml中分配ID一样。
    android:tag=\"unique_tag\"
链接到开发人员指南     
        您还可以像这样获得所有片段: 对于v4脆片
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
对于应用程序片段
List<Fragment> allFragments = getFragmentManager().getFragments();
    
        这是我发现的最好方法:
   public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null) {
          // Let\'s first dynamically add a fragment into a frame container
          getSupportFragmentManager().beginTransaction(). 
              replace(R.id.flContainer, new DemoFragment(), \"SOMETAG\").
              commit();
          // Now later we can lookup the fragment by tag
          DemoFragment fragmentDemo = (DemoFragment) 
              getSupportFragmentManager().findFragmentByTag(\"SOMETAG\");
        }
    }
}
    
        我知道已经有6年了,但是如果有人遇到同样的问题,请像我一样做: 使用标签字段创建自定义“ 1”类:
public class MyFragment extends Fragment {
 private String _myTag;
 public void setMyTag(String value)
 {
   if(\"\".equals(value))
     return;
   _myTag = value;
 }
 //other code goes here
}
在将片段添加到“ 14”之前,先设置标签,如下所示:
 MyFragment mfrag= new MyFragment();
 mfrag.setMyTag(\"TAG_GOES_HERE\");
 sectionPagerAdapter.AddFragment(mfrag);
    
        您可以将标签添加为
Fragment
参数的属性。如果碎片被销毁,然后由操作系统重新创建,它将自动恢复。 例:-
    final Bundle args = new Bundle();
    args.putString(\"TAG\", \"my tag\");
    fragment.setArguments(args);
    

要回复问题请先登录注册