Ich möchte eine Activity
von einer Fragment
starten, wenn ich eine Taste auf der letzten, aber ich bekomme ein leeres Layout anstelle des Layouts, das der Activity
zugeordnet ist.Wie kann ich eine Aktivität von einem Fragment starten?
Ich nenne die Fragment
von MainActivity.class
wie folgt aus:
FragmentManager mFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.mainContent,new FragmentMain()).commit();
Und auf FragmentMain
Klasse Ich habe eine onClick
Methode wie folgt:
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), FinalClass.class);
getActivity().startActivity(intent);
}
aber das Ergebnis ist ein leeres Layout und keine Fehler gezeigt auf dem logcat. Ich habe für ähnliche Verhaltensweisen im Web gesucht und ich fand einige Lösungen, die nicht mein Problem beheben:
Ich habe keine Methode addToBackStack()
auf meinem Projekt so dass diese Lösung funktioniert nicht für mich arbeiten.
getActivity().startActivity(myIntent)
ist die akzeptierte Antwort.
Die Art und Weise, wie sie die Aktivität aus dem Fragment starten, ändert sich nicht von der Art, wie ich sie verwende.
Jede der angebotenen Lösungen für mich gearbeitet.
PS: Ich habe die Activity
auf der Manifest.xml
Datei deklariert:
<activity
android:name=".FinalClass"
android:screenOrientation="portrait"
android:label="Final Class"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme.NoActionBar" />
PS2: nicht fragen Zweifeln, wenn Sie mehr Code benötigen (Ich habe versucht, es zu vereinfachen auf das konzentrieren, Problem).
Was kann ich tun, um zu vermeiden, dass die Activity
mir ein leeres Layout anstelle des Layouts Activity
gibt?
Vielen Dank im Voraus!
haben alle Ansichten im Layout von 'FInalClass' Aktivität? –
Nur eine Randnotiz, nicht sicher, ob 'getActivity(). StartActivity()' aus einem Fragment eine gute Übung ist. Ich würde vorschlagen, eine Schnittstelle zu verwenden, die Ihre Aktivität implementiert, und dann eine Methode auf der Schnittstelle von Ihrem Fragment aufrufen. Dann starten Sie Ihre Aktivität von Ihrer Aktivität. obwohl Denken Sie nicht, es zu einem Problem zu tun hat .. – vkislicins
@BurhanuddinRashid Ich habe folgendes: 'öffentliche Ansicht onCreateView (LayoutInflater inflater, Viewgroup Behälter, Gebündelt savedInstanceState) { final Ansicht inflaterFinalClass = inflater.inflate (R.layout.activity_final_class , Null); return inflaterFinalClass; ' –