Uzyskaj dostęp do widoku fragmentów z poziomu aktywności na stronie Tworzenie
Jestem w trakcie tworzenia mojej pierwszej aplikacji na Androida i mamFragment
to zostanie dodane do mojegoActivity
wActivity
jestonCreate()
metoda. Problem, z którym mam do czynienia, polega na tym, że nie mogę znaleźć żadnego z widoków zawartych wFragment
zActivity
jestonCreate()
metoda.
Inne wątki sugerują, że to dlatego, żeFragment
nie został jeszcze zawyżony, więcfindViewById()
zwróci wartość null dla wszystkich widoków zawartych wFragment
.
Oto co mam na myśli:
Czynność:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("activity onCreate");
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
return;
}
initialiseUI(); // Fragment added to Activity
System.out.println("end of activity onCreate");
}
Fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("fragment onCreateView");
return inflater.inflate(R.layout.event_log, container, false);
}
Spowoduje to wydrukowanie wyników:
aktywność na Utwórz koniec aktywności na Utwórz fragment na CreateView
Z powodu tego zamówienia każda próba uzyskania dostępu do widokówFragment
wActivity
jestonCreate()
metoda (przy użyciufindViewById()
) produkujeNullPointerException
, jakFragment
jestonCreateView()
zostaje wywołana dopiero po zakończeniuActivity
jestonCreate()
.
UżywającFragmentManger
jestexecutePendingTransactions()
po dodaniuFragment
nie pomaga.
Zasadniczo byłem zmuszony umieścić kod problemu wActivity
jestonStart()
metoda zamiastonCreate()
, tak jakonStart()
dzieje się poFragment
jestonCreateView()
.
Czy ktokolwiek, co jest tutaj standardową praktyką, lub jak mogę sprawić, by mój kod dostępu do Fragmentu działał wActivity
jestonCreate()
metoda?