Bei Layoutwechsel ID und Hintergundbild übernehmen

  • Antworten:6
Bastian B.
  • Forum-Beiträge: 15

30.04.2013, 16:08:12 via Website

Ich habe in meiner activity_main.xml einen Button mit einem Hintergrundbild erstellt, mit hilfe dessen ich auf mein 2.Layout (layout2.xml) gelange.
Auf meinem 2. Layout habe ich mehrere Buttons, natürlich mit einer ID und zusätzlich noch einem Hintergundbild.
Der Layout-Wechseln funktioniert auch wenn ich den Button auf meiner activity_main.xml betätige.
Also:
1<Button
2 android:id="@+id/knopf"
3 android:layout_width="60dp"
4 android:layout_height="80dp"
5 android:layout_alignParentLeft="true"
6 android:layout_marginLeft="10dp"
7 android:layout_marginTop="15dp"
8 android:clickable="true"
9 android:background="@drawable/pcardback"
10 android:textAppearance="?android:attr/textAppearanceLarge"
11 android:onClick="seitezwei"/>

1public void seitezwei(View view){
2 setContentView(R.layout.layout2);
3 }

Um von einem Button der 2. Seite wieder auf meine activity_main.xml zurückzugelangen würde ja auch mit setContentView(R.layout.activity_main) funktionieren.
Wie kann ich jetzt festlegen, dass erkannt wird auf welchen Button geklickt wurde und anschließend die ID und Hintergrundbild des geklickten Buttons für den Button (knopf) auf meinem activity_main layout übernommen wird?
Schreibe gerade mein erstes kleines Programm unter Android, daher kenn ich mich noch nicht so gut aus.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 16:15:45 via App

Wie darf man das verstehen: Du möchtest die ID des zweiten Buttons für den ersten haben? Welchen Sinn soll das haben?
Vielleicht sind zwei Activitys doch die bessere Wahl.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Bastian B.
  • Forum-Beiträge: 15

30.04.2013, 16:26:09 via Website

Also ich möchte anhand des angeklickten Buttons auf dem 2. Layout eine Ausgabe in meiner activity_main vornehmen.
Daher hab ich mir gedacht, dass ich den Buttons auf meinem 2. Layout IDs zuweise und diese auf mein erstes Layout übernehme und abhängig von der ID dann eine entsprechende Ausgabe habe.
Für andere Vorschläge bin ich auch gerne zu haben.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 17:37:09 via App

Ach so, auf layout2 gibt es mehrere Buttons^^
Einen int - Wert bekommst du in deiner click Methode über den view Parameter via view.getId() diesen int kannst du z.B. mit R.id.meineId vergleichen. Den String "meineId" zu bekommen geht denke ich nicht.
Andere Idee wäre Tags zu benutzen. (Google mal)

Gruß

— geändert am 30.04.2013, 17:37:49

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Bastian B.

Antworten
Bastian B.
  • Forum-Beiträge: 15

30.04.2013, 20:23:49 via Website

Ok, also ich hab jetzt meine Methode für die Buttons auf meinem zweiten Layout, die so aussieht:

1public void button1(View view){
2 setContentView(R.layout.activity_main);
3 // meinButton = (Button) findViewById(R.id.karte1);
4 view.getId();
5 }

Über view.getId(); erhalte ich also dann den Wert des angeklickten Buttons…?
Also bräuchte ich jetzt eine Methode, welche je nach angeklicktem Button den Wert ausgibt. Das Problem das ich jetzt habe ist, wie ich auf den Wert aus der Methode zugreifen kann.
Find da leider auch kein Beispiel zu, was einem das ganze etwas verständlicher machen würde.

Vielleicht zum Verständnis noch was ich überhaupt machen will....
Ich versuche eine App zu schreiben, welche die Gewinn-Wahrscheinlichkeit für Pokerhände in Abhängigkeit von der Gegneranzahl ausgibt.
Ich gebe zum Beispiel als Gegneranzahl: 1 an und als Starthand wähle ich Asse. Somit erhalte ich eine Gewinnchance von x Prozent. Splitt von x Prozent. Und Verlust von x Prozent.
Ich hatte das ganze bereits als String-Eingabe mit Hilfe einer HashMap realisiert. Für Asse zum Beispiel den String AA genommen.
D.h. es wurde eine Switch-Case Anweisung für die Gegneranzahl verwendet und mit Hilfe einer if-Anweisung die HashMap auf die String-Eingabe überprüft. Anschließend wurden die dem String zugehörigen Werte (Gewinn, Split, Verlust) ausgegeben.
Um das ganze etwas komfortabler zu gestalten möchte ich jetzt anstatt der Karteneingabe als String richtige Karten auswählen können.
Nur merke ich gerade, dass sich das Ganze schwieriger gestaltet als angenommen.

Antworten
impjor
  • Forum-Beiträge: 1.793

30.04.2013, 20:36:25 via App

Wenn ich das richtig verstanden habe, kannst du das so machen:

in layout2.xml
1<Button
2...
3android:tag="AA"
4android:text="Asse">

Als Tag also das, was du als key in der HashMap hast.
in deiner onClick:
1void click(View v) {
2 ...
3String key = v.getTag();
4.....
5}

Gruß

Edit + Ps: Du hast vielleicht schon mal
button = findViewById(R.id.meinButton); verwendet. Das v in deiner Methode ist quasi das Objekt "button", nur halt der, der angeklickt wurde. Wenn du weißt, das diese eine click- Methode nur für Buttons ist, also nicht z.B. für Textviews und du spezielle Button- Funktionen brauchst kannst du v in einen Button "casten" (umwandeln)
Try {
Button b = (Button) v;
} ...

— geändert am 30.04.2013, 20:41:11

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Bastian B.

Antworten
Bastian B.
  • Forum-Beiträge: 15

02.05.2013, 19:32:07 via Website

Dein Beitrag war auf jeden Fall sehr hilfreich, dennoch hab ich ein kleines Problem.
Denke dafür mache ich lieber einen eigenen Thread auf mit geeignetem Namen.

— geändert am 03.05.2013, 18:43:34

Antworten