Ничего подобного setTag(String tagName)
в Fragment
классе я не нашел . Единственный способ установить Fragment
тег, который я нашел, - это выполнить FragmentTransaction
и передать имя тега в качестве параметра.
Это единственный способ явно установить Fragment
тег по коду?
android
android-3.0-honeycomb
android-fragments
Аксель М. Гарсия
источник
источник
Вы можете установить тег для фрагмента следующим образом:
Fragment fragmentA = new FragmentA(); getFragmentManager().beginTransaction() .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG") .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();
источник
Вы можете предоставить тег внутри XML-файла макета активности.
Поставьте
android:tag attribute
уникальную строку.Так же, как вы назначаете идентификатор в макете xml.
android:tag="unique_tag"
ссылка на руководство разработчика
источник
Вы также можете получить все фрагменты так:
Для фрагметов v4
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
Для app.fragment
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 лет назад, но если кто-то столкнулся с той же проблемой, сделайте то же, что и я:
Создайте собственный
Fragment
класс с полем тега:public class MyFragment extends Fragment { private String _myTag; public void setMyTag(String value) { if("".equals(value)) return; _myTag = value; } //other code goes here }
Перед добавлением фрагмента в
sectionPagerAdapter
набор тег просто так: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);
источник