Bagaimana untuk mengatur sebuah Fragmen tag dengan kode?

Aku ingin't menemukan sesuatu seperti setTag(String tagName) metode Fragmen kelas. Satu-satunya cara untuk mengatur Fragmen tag yang saya temukan adalah dengan melakukan FragmentTransaction dan melewati tag nama sebagai parameter.

Ini adalah satu-satunya cara untuk secara eksplisit mengatur Fragmen tag dengan kode?

Larutan

Ya. Jadi satu-satunya cara adalah pada waktu transaksi, misalnya menggunakan add, menggantikan, atau sebagai bagian dari tata letak.

Aku ini ditentukan melalui pemeriksaan kompatibilitas sumber seperti yang saya sebentar tampak serupa di beberapa titik di masa lalu.

Komentar (3)

Anda dapat mengatur tag untuk fragmen dengan cara ini:

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

Anda dapat memberikan tag dalam aktivitas tata letak file xml.

"Pasokan android:tag dengan atribut yang unik string."

hanya karena anda menetapkan id di layout xml.

    android:tag="unique_tag"

link untuk panduan pengembang

Komentar (2)

Anda juga bisa mendapatkan semua fragmen seperti ini:

Untuk v4 fragmets

List allFragments = getSupportFragmentManager().getFragments();

Untuk aplikasi.fragmen

List allFragments = getFragmentManager().getFragments();
Komentar (0)

Aku tahu itu's sudah 6 tahun yang lalu, tetapi jika ada yang menghadapi masalah yang sama seperti saya've dilakukan:

Membuat custom Fragmen Kelas dengan bidang tag:

public class MyFragment extends Fragment {
 private String _myTag;
 public void setMyTag(String value)
 {
   if("".equals(value))
     return;
   _myTag = value;
 }
 //other code goes here
}

Sebelum menambahkan fragmen sectionPagerAdapter mengatur tag seperti itu:

 MyFragment mfrag= new MyFragment();
 mfrag.setMyTag("TAG_GOES_HERE");
 sectionPagerAdapter.AddFragment(mfrag);
Komentar (0)

Ini adalah cara terbaik yang saya telah menemukan :

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

Anda dapat menambahkan tag sebagai properti untuk Fragmen argumen. Itu akan dipulihkan secara otomatis jika fragmen hancur dan kemudian diciptakan oleh OS.

Contoh:-

    final Bundle args = new Bundle();
    args.putString("TAG", "my tag");
    fragment.setArguments(args);
Komentar (2)