2010-12-14 14 views
1

Nun, ich habe ein anderes Problem, dass ich nicht scheinen kann, um die Lösung zu finden ... Ich habe eine App, die die main.xml-Datei beim Start natürlich lädt. Darin befinden sich mehrere Schaltflächen, und ich möchte, dass die Schaltflächen mich zu einer anderen XML-Datei führen. Ich habe gerade die Methode setContentView (R.layout.newlayout.xml) dafür verwendet, und es funktioniert großartig. Das Problem kommt danach. Wenn ich auf eine der Schaltflächen oder andere Objekte im neuen Layout referenziere, wird die App nicht einmal fertig geladen, bevor sie einen Fehler erkennt und auf dem Emulator schließt. Wenn ich jedoch alle Verweise auf Objekte herausnehme, läuft die App gut. Ich kann die neuen Layouts TO navigieren, aber ihre Schaltflächen können nichts tun. Muss ich für jedes Layout eine separate Java-Datei erstellen? Oder mache ich alles falsch? Ich versuche, so spezifisch wie möglich zu sein ... Ich nehme an, du könntest sagen, dass ich verschiedene "Seiten" in meiner App haben muss, wie eine Website es tun würde.Ansichten/Layouts wechseln

+0

Code Posting würde uns den Fehler schnell lokalisieren lassen. –

Antwort

0

Ok, für jeden da draußen mit dem gleichen Problem und haben nicht herausgefunden, wie es geht, wie ich in meinem Kommentar auf ylebre sagte, mein Mitarbeiter und ich habe endlich entdeckt, wie es geht. Zunächst einmal, wir hinzugefügt

implements OnClickListener

der Klasse, nach

extends Activity 

dann haben wir eine neue Java-Datei erstellt, und am Anfang der Datei nannte es

setContentView(R.layout.newlayout); 

anstelle von Haupt. Dann haben wir eine Taste wie folgt:

Button button1 = (Button) findViewById(R.id.button01; 
button1.setOnClickListener(this); 

dann später im Code:

public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.button01: 
       startActivity(new Intent(this, NEWJAVAFILE.class)); 
       break; 

     } 
    } 

Und das ist es! Wir haben diesen Code einfach in NEWJAVAFILE kopiert und eingefügt, die Namen und so geändert, und wir konnten uns frei hin und her bewegen. Wie ylebre sagte, ist der gesamte Code für die neue Aktivität in NEWJAVAFILE.java. OH und vergessen Sie nicht den Namen der Java-Datei auf das Manifest in den Tags hinzuzufügen:

<activity android:name=".NEWJAVAFILE">   
    </activity> 

es jetzt so einfach zu sein scheint!

1

Ich denke, was Sie versuchen zu tun, ist am besten mit mehreren Java-Dateien gelöst, jeder definiert seine eigene Android-Aktivität.

Während es möglich ist, mehrere Layouts/Ansichten in einer einzigen Aktivität zu haben, wird dies den Code in der Zukunft komplexer und schwieriger zu lesen/debuggen machen. Wenn Sie jeden "Bildschirm" in einer eigenen Datei haben, ist es ein wenig einfacher, all die verschiedenen Ansichten zu verwalten, die Sie jonglieren müssen.

+0

Vielen Dank! In den letzten zwei oder drei Stunden habe ich mit einem anderen Programmierer in meinem Büro zusammengearbeitet (der keine Erfahrung mit Android, ein wenig mit Java vom College und ein wenig mit C# hat) und wir haben ENDLICH herausgefunden, wie man alles zum Laufen bringt.Ich wünschte, wir hätten deinen Beitrag zuerst überprüft, weil wir genau das getan haben! Ich werde ein Beispiel in einer Antwort für jeden anderen veröffentlichen, der dieses Problem hat. – Brandon

1

Die Tasten und Ansichten können nur diejenigen, die in der aktuellen SetContentView (Datei) erwähnt beziehen ..

u dies eine Schaltfläche durch das Erstellen und Initialisieren zu einem R.id ... testen können den Inhalt Ansicht ohne Einstellung .. U wird eine Kraft nahe kommen ..

so, wenn u die XML-Datei ändern u Sachen wieder initialisieren shud ....