Wie man gemeinsames Layout zwischen Aktivitäten ohne Fragment teilt

Gibt es eine Möglichkeit, das Layout (Teil) zwischen den Aktivitäten zu teilen? Zum Beispiel in meiner App, alle Aktivitäten haben ähnliche Layout, der obere Teil ist lange Betriebsanzeige (ein Fortschrittsbalken, versteckt, wenn keine Operation ausgeführt wird), der untere Teil ist für die Anzeige von Fehlern. Nur der Mittelteil ist für alle Aktivitäten anders. Siehe Bild unten.

Bildbeschreibung hier eingeben

  • Versuchen, YouTube-Video in einer PhoneGap / Cordova App zu starten
  • Wie man eine Übersetzungsanimation für jede Listenansicht macht
  • Android Studio - Ambiguous Methode rufen getClass ()
  • Durch Drücken der Menütaste wird ein Unfall in Aktivität ohne ActionBar verursacht
  • Android-Statusbar-Overlay mit ActionBar
  • Die Anzeigengröße und die Anzeigenblock-ID müssen vor dem Laden eingegeben werden, wenn sie programmgesteuert eingestellt sind
  • Also meine Frage ist, ist es möglich, das gemeinsame Layout (Laden und Fehlerteil) für alle Aktivitäten in meiner App wiederzuverwenden? (Derzeit möchte ich kein Fragment verwenden, um es aus einigen Gründen zu tun)

    Vielleicht mögen die Layout-Ressourcen:

    Layoutfolder

    activity_common.xml activity_one_content.xml activity_two_content.xml 

    Vielen Dank

  • Deaktivieren Sie Android GridView-Hervorhebung vollständig (Auswahl deaktivieren)
  • Android - Verwendung von view.setX () und setY in api 8
  • Soll der Aufruf zur Superklasse die erste Aussage sein?
  • Ich bekomme seltsamen Fehler auf Android-Studio
  • Wie fügt man die Ansicht von unten zu einem Koordinator-Layout mit View-Pager hinzu?
  • HTML5 Audio nicht mehrmals spielen in Android 4.0.4 Gerät Native Browser
  • 3 Solutions collect form web for “Wie man gemeinsames Layout zwischen Aktivitäten ohne Fragment teilt”

    Sie können eine abstrakte "Basis" -Aktivität erstellen, die alle Ihre Aktivitäten erweitern, indem Sie setContentView überschreiben, um die Basis- und Subaktivitätslayouts zusammenzuführen.

    Auf diese Weise können Sie den gesamten Lade- / Fehlercode in der Basisaktivität behandeln und einfach zwischen dem Verstecken und dem Anzeigen der Ansichten in den Unteraktivitäten umschalten.

    Die abstrakte Aktivität:

     public abstract class BaseActivity extends Activity { protected RelativeLayout fullLayout; protected FrameLayout subActivityContent; @Override public void setContentView(int layoutResID) { fullLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.activity_base, null); // The base layout subActivityContent = (FrameLayout) fullLayout.findViewById(R.id.content_frame); // The frame layout where the activity content is placed. getLayoutInflater().inflate(layoutResID, subActivityContent, true); // Places the activity layout inside the activity content frame. super.setContentView(fullLayout); // Sets the content view as the merged layouts. } } 

    Die Layout-Datei:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/loading_frame" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <FrameLayout android:id="@+id/error_frame" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout> 

    Sie könnten den Einsatz in XML , um auch den wiederverwendbaren Teil Ihres Layout-Codes zu verwenden.

    Als Beispiel hier ist meine Layout-Datei für die Toolbar ich in meiner App verwendet habe:

     // /res/layout/component_toolbar.xml <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:taggr="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primary" android:minHeight="?attr/actionBarSize" taggr:popupTheme="@style/ThemeOverlay.AppCompat.Light" taggr:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

    Nun, sagen Sie, wenn ich diese Toolbar wieder in einer anderen Activity möchte, das ist alles, was ich schreiben muss:

     // /res/layout/whatever_layout_this_might_be.xml <include layout="@layout/component_toolbar" /> 

    Denken Sie daran, dass dies nur das Layout kopieren würde – nicht das tatsächliche Verhalten des Widgets / der Komponente.

    Wenn du eigentlich alle Aspekte kopieren möchtest (Layout, Verhalten), habe ich Angst, Fragment ist der einzige Weg zu gehen.

    Obwohl ActivityGroup von API 13 veraltet ist, aber wenn du nicht mit Fragmenten gehen willst, dann kann das deine beste Wahl sein.

    Nach der Dokumentation ist eine ActivityGroup:

    Ein Bildschirm, der mehrere eingebettete Aktivitäten enthält und ausführt.

    Hier finden Sie ein Tutorial hier und hier Obwohl das erwähnte Tutorial ein Tablayout verwendet, können Sie das mit Ihrem gemeinsamen Layout in XML ersetzen.

    Eine zweite Annäherung könnte Wiederverwendung das Layout mit include-Tag , in diesem Ansatz können Sie nur wieder Ihre einmal erstellt gemeinsamen Layout überall in der App.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.