Ich bin dabei, meine erste App für Android zu machen, und ich habe eine Fragment
, die zu meiner Activity
in Activity
onCreate()
Methode hinzugefügt wird. Das Problem, mit dem ich konfrontiert bin, ist, dass ich keine der Ansichten finden kann, die in der von der Activity
onCreate()
Methode enthalten sind.Access Fragment Ansicht von Activity onCreate
Andere Themen haben vorgeschlagen, dass dies daran liegt, dass die Fragment
noch nicht aufgeblasen wurde, so findViewById()
wird Null für alle Ansichten innerhalb der Fragment
zurückgeben. Hier
ist, was ich meine:
Aktivität:
@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);
}
Dies druckt die Ergebnisse:
Aktivität onCreate Ende der Tätigkeit onCreate Fragment onCreateView
Aufgrund dieser Ordnung wird jeder Versuch, die Ansichten der Fragment
in den Activity
zuzugreifen ‚onCreate()
Methode s (mit findViewById()
) ein NullPointerException
, da die Fragment
‘ s onCreateView()
erst nach dem Ende der Activity
‚s aufgerufen wird, onCreate()
.
Die Verwendung der FragmentManger
executePendingTransactions()
nach dem Hinzufügen der Fragment
hilft nicht.
Grundsätzlich habe ich onCreateView()
das Problem Code in den Activity
zu setzen gezwungen 's onStart()
Methode statt onCreate()
, wie onStart()
passiert nach den Fragment
ist.
Hat jemand was die Standard-Praxis hier ist, oder wie kann ich meinen Fragment-View-Zugriff Code innerhalb der Activity
onCreate()
Methode arbeiten?
Warum möchten Sie auf die 'Fragment'-Ansichten in' activity's 'onCreate()' Methode zugreifen? Etwas stimmt nicht mit deinem Design. – biegleux
Nach dem Hinzufügen eines Fragments in der onCreate() - Methode der Aktivität möchte ich den Text einer TextView, die in dem Fragment enthalten ist, ändern und einige Elemente zu einem Spinner hinzufügen. Was könnte mit meinem Design falsch sein? – Dan
Aktualisieren Sie dann das Layout Ihres Fragments in 'Fragment's' onCreateView() 'Methode. Siehe meine Antwort. – biegleux