Cum de a stabili un Fragment etichetă de cod?

Nu am't a găsit ceva de genul setTag(String tagName) metoda în "Fragmente" de clasă. Singura modalitate de a stabili un "Fragmente" tag-ul pe care l-am găsit este de a face o FragmentTransaction și trece un nume de etichetă ca parametru.

Aceasta este singura modalitate de a seta în mod explicit un "Fragmente" etichetă de cod?

Soluția

Da. Deci singura cale este de la ora tranzacției, de exemplu, folosind "add", "înlocuiți", sau ca parte a layout.

Am hotărât acest lucru printr-o examinare a compatibilității surse ca m-am uitat pe scurt similare la un moment dat în trecut.

Comentarii (3)

Puteți seta tag-ul pentru a fragmenta în acest fel:

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

Puteți furniza o etichetă în interiorul activitate layout fișier xml.

"Alimentare cu android:tag atribut cu un șir unic."

doar ca ai atribui id-ul într-un layout xml.

    android:tag="unique_tag"

link-ul de la producător ghid

Comentarii (2)

Puteți obține, de asemenea, toate fragmentele de genul asta:

Pentru v4 fragmets

List allFragments = getSupportFragmentManager().getFragments();

Pentru app.fragment

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

Știu că's a fost acum 6 ani, dar dacă cineva se confruntă cu aceeași problemă ca și cum am'am făcut:

Creați un custom "Fragmente" de Clasă cu o etichetă câmp:

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

Înainte de a adăuga fragment de la sectionPagerAdapter a seta tag-ul la fel ca asta:

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

Acest lucru este cel mai bun mod am găsit :

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

Puteți adăuga tag-ul ca o proprietate pentru "Fragmente" de argumente. Acesta va fi restaurat în mod automat în cazul în care fragmentul este distrusă și apoi recreat de sistemul de OPERARE.

**Exemplu: -*

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