2010-02-04 4 views
24

In meiner Hauptansicht zu verbinden, ich habe:Wie eine Layout-Ansicht mit einer Aktivität

public class PlayersActivity extends Activity { 
    ViewFlipper flipper; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.playercontainer); 
     flipper = (ViewFlipper) findViewById(R.id.flipper); 
    } 
} 

mit dieser Ansicht:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/flipper" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <include android:id="@+id/first" layout="@layout/first" /> 
    <include android:id="@+id/second" layout="@layout/playerdetailsview" /> 
</ViewFlipper> 

Es zeigt die erste Ansicht richtig, aber ich will es sein verbunden mit einer Java-Klasse, so dass ich eine FirstActivity-Klasse erstellt habe, wo ich alle meine Komponenten in der ersten Ansicht steuern kann aber wie füge ich das First.xml Layout mit der FirstActivity Java-Klasse?

+0

PlayersActivity bereits Ihre Java-Klasse ist Ihre Komponenten zu steuern. Wie würde sich die Klasse FirstActivity von PlayersActivity unterscheiden? – RickNotFred

+0

, um meine Funktionalität in verschiedenen Klassen zu teilen, so dass ich dieses spezifische Layout in anderen Viewflippern wiederverwenden kann –

Antwort

39

Sagen Sie Ihre neue XML-Datei ist:

  1. Datei in Ihrem res/layout Verzeichnis.
  2. In Ihrer neuen Klasse verwenden Sie setContentView(R.layout.foo);
  3. Geben Sie Ihre neue Klasse in Ihrem manifest file.

Siehe auch das Thema auf declaring layout.

+1

Schritt 3 geht davon aus, dass Ihre Klasse eine Aktivität ist. – RickNotFred

+1

Ich habe in den Anwendungsknoten hinzugefügt (und folgte den anderen Schritten zu), aber es ruft immer noch nicht die Klasse an, definiere ich es direkt im Manifest? –

+0

Sie müssen den vollständig qualifizierten Namen angeben. Unter der Annahme, die Klasse befindet sich im selben Paket wie Ihr manifestieren, können Sie durch die Angabe als verkürzen (man beachte die führende‘.“) – RickNotFred

6

1) Erstellen Sie eine XML-Datei (z. B.).
2) Setzen Sie in res/layout Verzeichnis.
3) Bearbeiten und legen Sie einige Android-Layout-Code und speichern Sie es. zB

<?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" > 
    <ViewFlipper android:id="@+id/viewFlipper1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"></ViewFlipper> 
</LinearLayout> 

4) In Ihrem neuen Aktivitätsklasse setzen

setContentView(R.layout.foo); 

für eine Aktivität zu schaffen see this answer

ich das Problem mit dem XML-Datei erraten ist, dass Sie nicht das Layout festgelegt hatte die Aktivität.

0

Ändern Sie den Namen von FirstActivity in firstactivity. Layout ist nicht akzeptieren die Kappen, ich war das gleiche Problem konfrontiert.

3

nicht so schwer 2 Layouts zu verbinden gerade tun:

@Override 
    public void onClick(View args0) { 
    setContentView(R.layout.aardelayout); 
}