2010-01-28 5 views
6

Ich möchte einen gemeinsamen Banner und ein Menü auf jeder Aktivität mit Fußzeile auch platzieren.Wie Master- und untergeordnete Seite wie Activity in Android implementieren?

Kann mir jemand helfen, wie kann ich Master und Kind Seite wie asp.net in Android implementieren ???

Jede Hilfe wäre willkommen.

+0

Es ist eine kurze Anleitung, wie man ein "Master-Seite" Layout in Android machen - [hier] (http://jnastase.alner.net/archive/2011/ 01/08/ldquomaster-pagesrquo-in-android.aspx). –

Antwort

8

Sie könnten jede Ihrer Aktivitäten erweitern eine gemeinsame Basisklasse, die eine onCreateOptionsMenu-Methode hat, die das Menü aus dem gleichen XML jedes Mal aufbläht. Obwohl Sie nicht mehrfache Vererbung haben können, kann dies schwierig sein, wenn Sie beispielsweise einfache Aktivitäten und Aktivitäten auflisten möchten.

Eine andere Möglichkeit wäre, eine Util Klasse zu haben, in der Sie eine Methode wie setupMenu(Menu) haben, die jede Ihrer Aktivitäten aufrufen kann, wenn Sie komplexere Menüeinstellungen vornehmen.

In Bezug auf das XML-UI-Layout für jede Ihrer Aktivitäten können Sie ein gängiges Banner mithilfe des Tags <include/> einfügen.

+0

Commomn Banner zu implementieren können Sie mir bitte Beispiel ???? – UMAR

+0

Der Link in meiner Antwort hat ein Beispiel. Die Android-Startbildschirmanwendung enthält das gesamte Layout der workspace_screen.xml mehrmals mithilfe des Tags . –

0

Ich hatte das gleiche Problem und löste es mit ActivityGroup. Ich nehme an, dass Menüpunkte Benutzer zu einer anderen Aktivität verschieben, so dass mit dem gleichen Menü in jeder Aktivität schließen Anwendung mit BACK-Taste fast unmöglich sein kann (nach einiger Zeit Benutzer muss zurück gehen durch alle Aktivitäten, die er je gesehen hat).

Ich habe keine guten Tutorials in Englisch gefunden, so habe Mine vor einiger Zeit geschrieben (es ist etwas zu kurz und nur in polnischer Sprache, aber Google Tranlslated Version sollte verständlich sein) überprüft this

Sie können auch prüfen, wie Die TabHost works

1

Die Lösung war ziemlich einfach.

Sie müssen sich "Aktivität" Klasse, in onCreate Funktion SetContentView an Ihrer Basis XML-Layout und benötigen auch setContentView in Basisaktivität Klasse

Für das Beispiel außer Kraft zu setzen:

1.Erstellen „base_layout .xml“mit dem folgenden Code

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:background="#000000" 
     android:padding="15dp" > 
    <LinearLayout android:orientation="horizontal" android:background="#000000" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:minHeight="50dp" android:paddingLeft="10dp"> 
      <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView01" 
       android:adjustViewBounds="true" android:layout_height="wrap_content" 
       android:scaleType="fitCenter" android:maxHeight="50dp" /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/linBase" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </LinearLayout> 
</LinearLayout>  

2.Create "BaseActivity.java"

public class BaseActivity extends Activity { 
    ImageView image; 
    LinearLayout linBase;  
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.base_layout);   
     linBase = (LinearLayout)findViewById(R.id.linBase); 
    } 
    @Override 
    public void setContentView(int id) { 
     LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(id, linBase); 
    } 
} 

und

public class SomeActivity extends BaseActivity {  
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.some_layout); 
     //rest of code 
    } 
} 

Das einzige, was ich bisher auffiel, war, dass, wenn ein Fortschrittsbalken Anfordern (requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS)) diese vor dem Aufruf super.onCreate getan werden muss. Ich denke, das liegt daran, dass vor dem Aufruf dieser Funktion noch nichts gezeichnet werden kann.

Dies funktionierte gut für mich und hoffentlich finden Sie dies nützlich in Ihrer eigenen Codierung.

0

ViewStub ist die Lösung

activity_masterpage.

xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" >  
<ViewStub android:id="@+id/stub_content" 
       android:inflatedId="@+id/subTree" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 

stub = (ViewStub) findViewById(R.id.stub_content); 
stub.setLayoutResource(R.layout.content_layout); 
stub.inflate(); 
Verwandte Themen