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?
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.
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();
Puteți obține, de asemenea, toate fragmentele de genul asta:
Pentru v4 fragmets
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
Pentru app.fragment
List<Fragment> allFragments = getFragmentManager().getFragments();
Ș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);
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");
}
}
}
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);