как установить тег фрагмента по коду?

<p>я не нашел ничего похожего на метод <code>settag(string tagname)</code> в классе <code>fragment</code>. единственный способ установить тег <code>fragment</code>, который я нашел, - это сделать <code>fragmenttransaction</code> и передать имя тега в качестве параметра.</p><p>это единственный способ явно установить тег <code>fragment</code> по коду?</p>

<p>да. таким образом, единственный способ - во время транзакции, например, используя <code>add</code>, <code>replace</code> или как часть макета.</p><p>я определил это путем изучения источников совместимости, так как я кратко искал подобное в какой-то момент в прошлом.</p>

<p>вы можете установить тег для фрагмента следующим образом:</p><pre><code>fragment fragmenta = new fragmenta(); getfragmentmanager().begintransaction() .replace(r.id.mainframelayout,fragmenta,"your\_target\_fragment\_tag") .addtobackstack("your\_source\_fragment\_tag").commit(); </code></pre>

<p>вы можете предоставить тег внутри xml-файла макета активности.</p><p>msgstr "укажите для атрибута тега android: уникальную строку."</p><p>так же, как вы назначаете идентификатор в формате xml.</p><pre><code> android:tag="unique\_tag" </code></pre><p> <a href="http://developer.android.com/guide/components/fragments.html#adding">ссылка на руководство разработчика</a> </p>

<p>вы также можете получить все фрагменты, как это:</p><p><strong>для фрагментов v4</strong><br></p><pre><code>list<fragment> allfragments = getsupportfragmentmanager().getfragments(); </code></pre><p><strong>для app.fragment</strong><br></p><pre><code>list<fragment> allfragments = getfragmentmanager().getfragments(); </code></pre>

<p>я знаю, что это было 6 лет назад, но если кто-то сталкивается с той же проблемой, делайте так, как я:</p><blockquote> <p>-создайте пользовательский класс <code>fragment</code> с полем тега:</p> </blockquote><pre><code>public class myfragment extends fragment { private string \_mytag; public void setmytag(string value) { if("".equals(value)) return; \_mytag = value; } //other code goes here } </code></pre><blockquote> <p>-перед добавлением фрагмента в <code>sectionpageradapter</code> установите тег так:</p> </blockquote><pre><code> myfragment mfrag= new myfragment(); mfrag.setmytag("tag\_goes\_here"); sectionpageradapter.addfragment(mfrag); </code></pre>

<p>это лучший способ, который я нашел:</p><pre><code> 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"); } } } </code></pre>