2012-04-09 21 views
1

Ich bin neu in der Programmierung, hatte aber etwas Freizeit und nur ein neues Android-Tablet so dachte, es ist Zeit zu lernen. Ich spiele ein Brettspiel mit VIELEN Decks, aus denen du im Laufe des Spiels zeichnest und entschied, dass es einfach wäre, eine Anwendung zu haben, die die 21 Decks zeigt und du klickst auf eine und es zeigt zufällig eine Karte aus einem dieser Decks an . Du liest die Karte, handelst darauf, klickst auf die Karte und sie verschwindet.Mit mehreren Tasten auf Eclipse/Android

ich habe also ein Layout mit allen 21 Decks (7x3) jeweils einen individuellen Button. So habe ich 21 Tasten auf dem 1 Bildschirm. Laut dem Tutorial, das ich verfolgt habe, muss ich die Buttons in der .java-Datei deklarieren. button1 = (Button) findViewById (android.R.id.button1). aber es hat nur die Option, 3 Knöpfe zu deklarieren, nach denen ich das kleine rote x des Schicksals bekomme.

Wie gehe ich bei der Deklarierung aller 21 Tasten vor? Oder muss ich diese Buttons nicht deklarieren?

Jede Hilfe wäre großartig! (Vielleicht brauchen Sie auch Hilfe bei der Suche nach einem Weg, um die Funktion "Zeichnen" zu randomisieren. Seien Sie nicht überrascht, mich wieder zu sehen)

Antwort

0

Wenn Sie jede Taste in XML (main.xml oder so ähnlich) gelegt, dann ja, wenn man sie irgendetwas zu tun haben wollen, müssen Sie um die Knöpfe wie gesagt zu deklarieren.

Button button1 = (Button) findViewById(R.id.button1); 

Durch es auf diese Weise eingeben, ich nehme an, Sie nicht die Tasten höher in Ihrem Code als Klassenweite Felder erklären haben. Haben Sie die Methode setContentView (R.layout.main) ausgeführt?

Also lassen Sie uns nur klar sein: es sei denn, Sie tippen Button b1; Knopf b2; Button b3 direkt unter Ihrer Klassenzeile (public class YourClassName() {, jedes Mal wenn Sie versuchen, eine Schaltfläche zu instanziieren, müssen Sie sagen Button b1 = (Button) findViewById (R.id.button1); Wenn Sie Klassen- Weite Felder (direkt unter der Klassenzeile), dann können Sie Code haben, wie Sie in Ihrer ursprünglichen Frage gezeigt haben, wo es nur button1 = (Button) findViewById (R.id.button1) ist. Macht diese Unterscheidung Sinn?

+0

der setContentView (R, layout.main); ist die Zeile direkt über der Zeile, auf der ich schreibe (nicht sicher, was es tut; war Teil des Codes, der von Eclipse gesetzt wurde) – bribrem

+0

Haben Sie Ihre Schaltflächen in einer XML-Datei angeordnet? res/layout/main.xml zum Beispiel? Wenn ja, sagt setContentView() was Ihre .java-Datei sagt, wie der Bildschirm aussehen soll. Es setzt die View auf Ihre Layout-Datei, von der ich vermute, dass sie main.xml ist (oder wo auch immer Ihre Buttons angelegt wurden). Also, hast du einen Fehler? Wenn ja, was ist das? – Davek804

+0

Ich habe den Code Button button1 = (Button) findViewById (R.id.button1); und der erste button1 ist gelb unterstrichen und sagt (wenn der curser gehalten wird) "wird der Wert der lokalen Variable button1 nicht verwendet. Wird das verschwinden, sobald ich einen Befehl an die Schaltfläche anwende? – bribrem

0

Sie müssen jede Schaltfläche definieren. Verwenden Sie die folgen:

Button button1 = (Button)findViewById(R.id.idofbutton1); 
Button button2 = (Button)findViewById(R.id.idofbutton2); 
Button button3 = (Button)findViewById(R.id.idofbutton3); 
Button button4 = (Button)findViewById(R.id.idofbutton4); 

so weiter so weiter

0

Immer, wenn Sie erklären, einen Button (das ist ein Objekt):

Button button1 = (Button)findViewById(R.id.idofbutton1); 
Button button2 = (Button)findViewById(R.id.idofbutton2); 

Stellen Sie sicher, die "id" in das XML-Layout hinzufügen:

<Button 
    android:id="@+id/idofbutton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button1" 
    android:textSize="20px" > 
</Button> 

<Button 
    android:id="@+id/idofbutton2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button2" 
    android:textSize="20px" > 
</Button> 
Verwandte Themen