- Forum-Beiträge: 12
19.04.2014, 16:16:17 via Website
19.04.2014 16:16:17 via Website
Hallo, mithilfe eines Tutorials habe ich ein Quiz App erstellt. Wird eine Frage falsch beantwortet, dann wird noch ein kleiner Toast angezeigt welcher den Anwender darauf hinweisen soll, dass das Quiz nun beendet ist. Allerdings fehlt die Möglichkeit das Quiz mit einem Button direkt neuzustarten. Ich habe es bereits vergeblich mit einem AlertDialog ausprobiert, aber konnte ihn an keiner Stelle passend einsetzen ohne direkt eine Fehlermeldung zukriegen.
public class MainActivity extends Activity implements View.OnClickListener {
private Button antwort1;
private Button antwort2;
private Button antwort3;
private Button antwort4;
private TextView frage;
private Button btn;
private ProgressBar progressbar;
private AlertDialog altertDialog;
final Context context = this;
Spiellogik spiel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
antwort1 = (Button) findViewById(R.id.antwort1);
antwort2 = (Button) findViewById(R.id.antwort2);
antwort3 = (Button) findViewById(R.id.antwort3);
antwort4 = (Button) findViewById(R.id.antwort4);
frage = (TextView) findViewById(R.id.frage);
progressbar = (ProgressBar) findViewById(R.id.progressBar);
}
public void open(View view){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage(R.string.hello_world);
alertDialogBuilder.setPositiveButton(R.string.hello_world,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Intent positveActivity = new Intent(getApplicationContext(),MainActivity.class);
startActivity(positveActivity);
}
});
spiel = new Spiellogik();
for (int n = 1; n <= 4; n++) {
Button btn = null;
switch (n) {
case 1:
btn = (Button) findViewById(R.id.antwort1);
btn.setOnClickListener(this);
break;
case 2:
btn = (Button) this.findViewById(R.id.antwort2);
btn.setOnClickListener(this);
break;
case 3:
btn = (Button) this.findViewById(R.id.antwort3);
btn.setOnClickListener(this);
break;
case 4:
btn = (Button) this.findViewById(R.id.antwort4);
btn.setOnClickListener(this);
break;
}
}
}
public void onClick(View v) {
int id = v.getId(); if (id == R.id.antwort1) spiel.auswerten(1, this); // spielAuswerten(1); else if (id == R.id.antwort2) spiel.auswerten(2, this); // spielAuswerten(2); else if (id == R.id.antwort3) spiel.auswerten(3, this); // spielAuswerten(3); else if (id == R.id.antwort4) spiel.auswerten(4, this); // spielAuswerten(4);
}
}
class Frage { private String frage; private String option1; private String option2; private String option3; private String option4; private int loesung;
public Frage(String f,
String o1, String o2, String o3, String o4,
int l) {
frage = f;
option1 = o1;
option2 = o2;
option3 = o3;
option4 = o4;
loesung = l;
}
public void anzeigen(Activity quizActivity) {
((TextView) quizActivity.findViewById(R.id.frage)).setText(frage);
((Button) quizActivity.findViewById(R.id.antwort1)).setText(option1);
((Button) quizActivity.findViewById(R.id.antwort2)).setText(option2);
((Button) quizActivity.findViewById(R.id.antwort3)).setText(option3);
((Button) quizActivity.findViewById(R.id.antwort4)).setText(option4);
}
public boolean richtig(int ausgewaehlt) {
if (ausgewaehlt == this.loesung)
return true;
else
return false;
}
}
class Spiellogik {
final int ANZAHL_FRAGEN = 50;
Frage[] fragen = new Frage[ANZAHL_FRAGEN];
byte aktFrage = 0;
int gewinnstufe = 50;
Spiellogik() {
// Fragen erzeugen
fragen[0] =
new Frage(Frage 2",
"test1", "test2",
"test3", "test4", 1);
fragen[1] =
new Frage(Frage 2",
"test1", "test2",
"test3", "test4", 3);
// und so fort
}
public void auswerten(int schalter, Activity quizActivity) {
if (!fragen[aktFrage].richtig(schalter)) {
// falsche Antwort
if (gewinnstufe == 0) {
**//ehemaliger Platz vom Toast, AlertDialog funktioniert hier nicht**
}
else {
String str = "Sie haben Gewinnstufe " + gewinnstufe +
" erreicht! - Glückwunsch!!!";
Toast.makeText(quizActivity, str,
Toast.LENGTH_LONG).show();
} // Schalter deaktivieren
((Button) quizActivity.findViewById(R.id.antwort1)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort2)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort3)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort4)).setEnabled(false);
}
else {
if (aktFrage < ANZAHL_FRAGEN-1) {
fragen[++aktFrage].anzeigen(quizActivity);
gewinnstufe++;
((ProgressBar) quizActivity.findViewById(
R.id.progressBar)).setProgress(gewinnstufe);
}
else {
gewinnstufe++;
((ProgressBar) quizActivity.findViewById(
R.id.progressBar)).setProgress(gewinnstufe);
String str = "Super, Alles richtig beantwortet!!!";
Toast.makeText(quizActivity, str,
Toast.LENGTH_LONG).show();
// Schalter deaktivieren
((Button) quizActivity.findViewById(R.id.antwort1)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort2)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort3)).setEnabled(false);
((Button) quizActivity.findViewById(R.id.antwort4)).setEnabled(false);
}
}
}
}
Ich freue mich auf eure Hilfe und bedank mich schon einmal vorab... und natürlich... Frohe Ostern!