web-dev-qa-db-ja.com

コードでフラグメントタグを設定する方法

FragmentクラスにsetTag(String tagName)メソッドのようなものが見つかりません。私が見つけたFragmentタグを設定する唯一の方法は、FragmentTransactionを実行し、タグ名をパラメーターとして渡すことです。

これはコードでFragmentタグを明示的に設定する唯一の方法ですか?

130
Axel M. Garcia

はい。したがって、唯一の方法はトランザクション時です。 addreplaceを使用するか、レイアウトの一部として使用します。

過去のある時点で似たようなものを簡単に探したので、互換性のソースを調べてこれを決定しました。

110
PJL

この方法でフラグメントにタグを設定できます:

Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
    .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
    .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit(); 
69
David

アクティビティレイアウトxmlファイル内にタグを提供できます。

「Android:tag属性に一意の文字列を指定してください。」

レイアウトxmlでidを割り当てるように。

    Android:tag="unique_tag"

開発者ガイドへのリンク

31
Kuool

次のようなすべてのフラグメントを取得することもできます。

v4フラグメントの場合

List<Fragment> allFragments = getSupportFragmentManager().getFragments();

app.fragmentの場合

List<Fragment> allFragments = getFragmentManager().getFragments();
4
Chris Fremgen

私はそれが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);
0
Th3Wolf

これは私が見つけた最良の方法です:

   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");
        }
    }
}
0