Programm taucht nicht in IF Anweisung ein.

  • Antworten:5
borgelite
  • Forum-Beiträge: 3

23.11.2010, 01:25:34 via Website

Hi ich habe für mich ein schwieriges Problem. Ich will 2 Buttons mehrfach belegen kann aber nur jeweils
1x klicken und damit nur 2x text anzeigen lassen. Ich will aber mit jeden neuen klick in die if anweisung rein.

hier mal mein code:
1import android.app.Activity;
2import android.os.Bundle;
3import android.view.View;
4import android.view.View.OnClickListener;
5import android.widget.Button;
6import android.widget.TextView;
7
8public class HelloWorkshopActivity extends Activity
9 implements OnClickListener {
10
11 private Button jaButton;
12 private Button neinButton;
13
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main);
18
19 jaButton = (Button) findViewById(R.id.ja_button);
20 jaButton.setOnClickListener(this);
21
22 neinButton = (Button) findViewById(R.id.nein_button);
23 neinButton.setOnClickListener(this);
24 }
25
26 public void onClick(View v) {
27 //Text Felder
28 CharSequence text1 = "text1";
29 CharSequence text2 = "text2";
30 CharSequence text3 = "text3";
31 CharSequence text4 = "text4";
32 CharSequence text5 = "text5";
33 CharSequence text6 = "text6";
34 CharSequence text7 = "text7";
35 CharSequence text8 = "text8";
36 CharSequence text9 = "text9";
37 CharSequence text10 = "text10";
38
39
40 TextView greetingField = (TextView) findViewById(R.id.greeting_field);
41
42 if (v == jaButton) {
43 greetingField.setText(text1);}
44 if (v == neinButton) {
45 greetingField.setText(text2);
46 if (v == jaButton) {
47 greetingField.setText(text3);
48 if (v == jaButton) {
49 greetingField.setText(text5);
50 if (v == jaButton) {
51 greetingField.setText(text7);
52 }
53 if (v == neinButton) {
54 greetingField.setText(text9);
55 }
56 }
57 if (v == neinButton) {
58 greetingField.setText(text4);
59 }
60 }
61 if (v == neinButton) {
62 greetingField.setText(text8);
63 if (v == neinButton) {
64 greetingField.setText(text10);
65 }
66 if (v == jaButton) {
67 greetingField.setText(text6);
68 }
69 }
70 }
71
72 }
73
74}

danke im voraus.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

23.11.2010, 08:57:09 via Website

versuch mal

switch(v.getId() ) {

case R.id.ja_button:
//mach was mit ja button
break;
....
}

swordiApps Blog - Website

Antworten
borgelite
  • Forum-Beiträge: 3

23.11.2010, 11:22:32 via Website

Ja aber da kann ich doch aber auch nur 1mal den jaButton drücken.Ich will ja eine Verschachtelung machen.
........ja.....................nein
.....|.......|..................|.......|
....ja....nein...........ja....nein
...........|......|
..........ja...nein

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

23.11.2010, 11:25:16 via Website

sorry -keine ahnung was du machen willst :)

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 66

23.11.2010, 11:41:36 via Website

ich weis zwar auch nicht was du genau machen willst.

Aber vllt. hilft dir ein Zähler weiter?

damit zählst du dann immer mit, wenn der benutzer auf ja oder nein drückt. In den Verschachtelten if anweisungen frägst du diesen dann ab.

— geändert am 23.11.2010, 11:42:06

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

23.11.2010, 12:00:28 via Website

Wenn ich das richtig verstehe, dann willst du eine state-machine implementieren, also mit einer Sequenz von Klicks durch einen Zustands-Baum navigieren.

Das geht mit deinem Code natürlich überhaupt nicht, da dein Code immer nur weiss, welcher Knopf zuletzt gedrückt wurde, also keine Information über die Sequenz vorliegt.

In diesem einfachen Fall könntest du das zB so lösen:

int counter = 0;
String state = "";
...
onClick(View v) {
state += (v == ja) ? "1" : "0";
++counter;
...
}

In state steht dann zB nach Klick auf ja,ja,nein, ja die Zeichenfolge "1101".

Antworten