- Forum-Beiträge: 44
04.02.2014, 22:36:52 via Website
04.02.2014 22:36:52 via Website
Ich hab hier schon Mal ein Problem gehabt, konnte das aber soweit lösen.
Nochmal eine kurze Übersicht zur App:
Also es ist eine Quiz App, die Oberfläche besteht aus 4 Buttons (für die Antworten), einer TextView (für die Frage) und einer ProgressBar.
Wenn eine Frage richtig beantwortet wurde, soll sich das Layout an sich nicht ändern sondern nur aktualisiert werden, also die Frage ausgetauscht werden.
Das neue Problem ist, dass wenn ich den Button mit der richtigen Frage drücke, keine neue Frage kommt. Es erscheint auch kein Fehler im LogCat.
Hier mal meine Klassen + Manifest.
Quiz.class
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.view.View.OnClickListener;
7import android.widget.Button;
8
9public class Quiz extends Activity implements android.view.View.OnClickListener {
10 OnClickListener ln;
11
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_quiz);
16
17 // Spiellogik instanzieren
18 Spiellogik spiel = new Spiellogik();
19 // Antwort-Buttons mit Ereignislistener verbinden
20 for (int n = 1; n <= 4; n++) {
21 Button btn = null;
22
23 switch (n) {
24 case 1:
25 btn = (Button) this.findViewById(R.id.antwort1);
26 btn.setOnClickListener(ln);
27 break;
28 case 2:
29 btn = (Button) this.findViewById(R.id.antwort2);
30 btn.setOnClickListener(ln);
31 break;
32 case 3:
33 btn = (Button) this.findViewById(R.id.antwort3);
34 btn.setOnClickListener(ln);
35 break;
36 case 4:
37 btn = (Button) this.findViewById(R.id.antwort4);
38 btn.setOnClickListener(ln);
39 break;
40
41 }
42 }
43
44 // 1. Frage laden
45 spiel.fragen[spiel.aktFrage].anzeigen(this);
46 }
47
48 public void onClick(View v, Spiellogik spiel) {
49 int id = v.getId();
50
51 if (id == R.id.antwort1)
52 spiel.auswerten(1, this);
53 // spielAuswerten(1);
54 else if (id == R.id.antwort2)
55 spiel.auswerten(2, this);
56 // spielAuswerten(2);
57 else if (id == R.id.antwort3)
58 spiel.auswerten(3, this);
59 // spielAuswerten(3);
60 else if (id == R.id.antwort4)
61 spiel.auswerten(4, this);
62 // spielAuswerten(4);
63 }
64
65 @Override
66 public void onClick(View v) {
67 // TODO Auto-generated method stub
68
69 }
70}
Frage.class
2
3import android.app.Activity;
4import android.widget.Button;
5import android.widget.TextView;
6
7class Frage {
8 private String frage;
9 private String option1;
10 private String option2;
11 private String option3;
12 private String option4;
13 private int loesung;
14
15 public Frage(String f,
16 String o1, String o2, String o3, String o4,
17 int l) {
18 frage = f;
19 option1 = o1;
20 option2 = o2;
21 option3 = o3;
22 option4 = o4;
23 loesung = l;
24 }
25 public void anzeigen(Activity quizActivity) {
26 ((TextView) quizActivity.findViewById(R.id.frage)).setText(frage);
27 ((Button) quizActivity.findViewById(R.id.antwort1)).setText(option1);
28 ((Button) quizActivity.findViewById(R.id.antwort2)).setText(option2);
29 ((Button) quizActivity.findViewById(R.id.antwort3)).setText(option3);
30 ((Button) quizActivity.findViewById(R.id.antwort4)).setText(option4);
31 }
32
33 public boolean richtig(int ausgewaehlt) {
34 if (ausgewaehlt == this.loesung)
35 return true;
36 else
37 return false;
38 }
39 }
2
3import android.app.Activity;
4import android.widget.Button;
5import android.widget.ProgressBar;
6import android.widget.Toast;
7
8class Spiellogik {
9 final int ANZAHL_FRAGEN = 8;
10
11 Frage[] fragen = new Frage[ANZAHL_FRAGEN];
12 byte aktFrage = 0;
13 int gewinnstufe = 0;
14 Spiellogik() {
15 // Fragen erzeugen
16 fragen[0] =
17 new Frage("Wer ist Lukes Vater?",
18 "Darth Vader", "Obi Wan Kenobi",
19 "Der Imperator", "Bail Organa", 1);
20
21 fragen[1] =
22 new Frage("Wer tötet den Imperator?",
23 "Luke", "Darth Vader", "Obi Wan Kenobi", "Lea", 2);
24
25 // und so fort
26 }
27
28 void auswerten(int schalter, Activity quizActivity) {
29
30 if (!fragen[aktFrage].richtig(schalter)) {
31 // falsche Antwort
32 if (gewinnstufe == 0) {
33 Toast.makeText(quizActivity,
34 "Leider nichts gewonnen. :-(",
35 Toast.LENGTH_LONG).show();
36 }
37 else {
38 String str = "Sie haben Gewinnstufe " + gewinnstufe +
39 " erreicht! :-) - Glückwunsch!!!";
40 Toast.makeText(quizActivity, str,
41 Toast.LENGTH_LONG).show();
42 } // Schalter deaktivieren
43 ((Button) quizActivity.findViewById(R.id.antwort1)).setEnabled(false);
44 ((Button) quizActivity.findViewById(R.id.antwort2)).setEnabled(false);
45 ((Button) quizActivity.findViewById(R.id.antwort3)).setEnabled(false);
46 ((Button) quizActivity.findViewById(R.id.antwort4)).setEnabled(false);
47
48 }
49 else {
50 if (aktFrage < ANZAHL_FRAGEN-1) {
51 fragen[++aktFrage].anzeigen(quizActivity);
52
53 gewinnstufe++;
54 ((ProgressBar) quizActivity.findViewById(
55 R.id.progressBar1)).setProgress(gewinnstufe);
56 }
57 else {
58 gewinnstufe++;
59 ((ProgressBar) quizActivity.findViewById(
60 R.id.progressBar1)).setProgress(gewinnstufe);
61 String str = "Super, Alles richtig beantwortet!!!";
62 Toast.makeText(quizActivity, str,
63 Toast.LENGTH_LONG).show();
64 // Schalter deaktivieren
65 ((Button) quizActivity.findViewById(R.id.antwort1)).setEnabled(false);
66 ((Button) quizActivity.findViewById(R.id.antwort2)).setEnabled(false);
67 ((Button) quizActivity.findViewById(R.id.antwort3)).setEnabled(false);
68 ((Button) quizActivity.findViewById(R.id.antwort4)).setEnabled(false);
69
70 }
71 }
72 }
73 }
Manifest:
2 package="de.versuch"
3 android:versionCode="1"
4 android:versionName="1.0" >
5
6 <uses-sdk
7 android:minSdkVersion="8"
8 android:targetSdkVersion="15" />
9
10 <application
11 android:icon="@drawable/ic_launcher"
12 android:label="@string/app_name"
13 android:theme="@style/AppTheme" >
14 <activity
15 android:name=".Quiz"
16 >
17 <intent-filter>
18 <action android:name="android.intent.action.MAIN" />
19
20 <category android:name="android.intent.category.LAUNCHER" />
21 </intent-filter>
22 </activity>
23 </application>
24
25</manifest>
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.