Gibt es eine Möglichkeit, setContentView (id) mehrmals mit einer anderen ID aufzurufen, um verschiedene Ansichten zu rendern oder muss ich unbedingt eine neue Aktivität starten?SetContentView() mehrmals aufrufen
Antwort
Per Austyn Kommentar, ich habe es geschafft, einige Hinweise zu finden, wie ViewFlipper zu verwenden, um dies in einem anderen Beitrag zu erreichen (siehe für die aktivierten Top-Antwort here.)
Wenn Sie ViewFlipper nicht verwenden möchten, ich ein schönes Beispiel gefunden, wie here zwischen Layout in der gleichen Ansicht wechseln:
XML:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:src="@drawable/icon"
android:scaleType="fitCenter"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
<TextView
android:text="Learn-Android.com"
android:textSize="24sp"
android:textColor="#000000"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"/>
</FrameLayout>
Code:
private void SwitchLayout2() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);
// Enable Layout 2 and Disable Layout 1
Layout1 .setVisibility(View.GONE);
Layout2.setVisibility(View.VISIBLE);
}
private void SwitchLayout1() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);
// Enable Layout 1 & Disable Layout2
Layout1.setVisibility(View.VISIBLE);
Layout2.setVisibility(View.GONE);
}
Nein, Sie können es nicht einfach mehrmals aufrufen. Sie müssen entweder alle Ansichten vollständig entfernen und dann das neue Layout aufblasen, oder verwenden Sie eine ViewFlipper
(oder FrameLayout
), um zwischen verschiedenen Ansichten zu wechseln.
Auf eine Randnotiz wurde diese Frage schon einmal gestellt, obwohl ich sie nicht sofort finden konnte.
können Sie versuchen, diese von Ihrer Aktivität:
getWindow().addContentView(View, ViewGroup.LayoutParams);
Die beiden Inhalt Ansicht, die eine auf dem anderen sein wird. Aber es gibt keine direkte Möglichkeit, eine bestimmte, auf diese Weise hinzugefügte Ansicht zu entfernen.
Beachten Sie auch, dass das Aufrufen von setContentView
nach dem letzten Anruf alle zuvor hinzugefügten Inhaltsansichten entfernt.
- 1. Wie sqlsrv_fetch_array (..) mehrmals aufrufen?
- 2. Warum viewdidlayoutsubviews mehrmals aufrufen?
- 3. Wie onDraw nach setContentView (R.layout.main) aufrufen?
- 4. Muss ich Crashlytics.start mehrmals aufrufen?
- 5. T-SQL-Tabellenwertfunktion mehrmals schneller aufrufen als einmal aufrufen?
- 6. Code vor setContentView Problem
- 7. Mit 'findViewById()' nach 'setContentView()'
- 8. setContentView und Schaltflächen im Android
- 9. setContentView nur große Layout
- 10. setContentView erlaubt keine Suche
- 11. Android setContentView-Vorgang
- 12. Android ProgressDialog mit setContentView
- 13. Android: setContentView und LayoutInFlater
- 14. setContentView xml-Datei Fehler
- 15. Können Sie Wait() für eine Aufgabe mehrmals aufrufen?
- 16. Aktualisieren von BindingList auf dem ui Thread mit mehrmals aufrufen
- 17. Kendo UI TreeList Controller-Aktion mehrmals auf Expanding Node aufrufen?
- 18. Wie kann man eine Funktion mehrmals abwechselnd in JS aufrufen?
- 19. Wie kann man eine Funktion mehrmals automatisch aufrufen?
- 20. setContentView nicht ausgeführt, nachdem onRestoreInstanceState
- 21. setContentView Fehler in MainActivity Android
- 22. Wo setze setContentView() in onCreate()?
- 23. Instrumententests - Nullzeiger Ausnahme auf SetContentView()
- 24. Android Fragment akzeptiert keine setcontentview
- 25. ScheduledExecutorService Start Stop mehrmals
- 26. NSURLProtocol canInitWithRequest: mehrmals aufgerufen
- 27. Wie überprüfen Sie mehrmals mehrmals die Anweisung
- 28. Gibt es eine Möglichkeit Bindungen an eine setContentView Aktivität
- 29. Winkelversprechen mehrmals
- 30. Aufruf mehrmals in Objective-C
Sie sollten wirklich eine 'ViewFlipper' verwenden, um dies zu tun und nicht nur die Sichtbarkeit auf jedem' View' –
@AustynMahoney ändern, wäre es toll zu wissen, warum es am besten ist, einen ViewFlipper anstelle von Glenviewjeff zu verwenden beschriebene Methode. – user438293456
Warum möchten Sie das Rad neu erfinden, wenn Android bereits eine sehr einfache Möglichkeit bietet, genau das zu erreichen? Was passiert, wenn Sie diese auf 3 Layouts oder vielleicht 18 erweitern möchten? Wenn du 'ViewFlipper' benutzt hast, ist es ganz einfach, wenn du nicht viel Glück hast, diese Code-Basis zu pflegen. –