Hallo
Ich hab letztes Wochenend mit der Android-Programmierung angefangen und ich hänge an einem Problem. Ich habe ein AlertDialog, dessen Inhalt ich immer wieder ändere, sobald ein Knopf (Weiter) gedrückt wird. Nun möchte ich, dass in einem bestimmten Fall die Buttons ausgewechselt werden.
Hintergrund der Applikation: Mit ihr soll man lernen können. Das Dialog zeigt eine Frage. Nachdem man weiter klickt, soll man die Möglichkeit für falsch/richtig haben. Egal was gedrückt wird: Es wird eine Frage angezeigt wieder mit dem Button Weiter. Das soll alles auf dem gleichen AlertDialog geschehen. Allerdings funktioniert meine Implementierung nicht und ich verstehe nicht wo mein Fehler liegt. Könnte sich das jemand schnell anschauen?
Ich hab diese Methode, weil ich nicht möchte das sich mein Dialog nach einem Klick selbst schliesst (standardmässig). Deswegen setze ich nach dem show des Dialogs einen neuen Listener, damit sich das nicht selbst schliesst. Das Setzen des Listener funktioniert (er macht also die richtige Funktion), aber die Knöpfe werden nicht angezeigt. Cancel und optfselect[1] sind bei der Abfrage auf true, fanzeige auf false. Er macht also die setMethoden, aber es werden immer noch die alten Knöpfe angezeigt und das kann ich mir nicht erklären ...
Vielen Dank
MfG
Ich hab letztes Wochenend mit der Android-Programmierung angefangen und ich hänge an einem Problem. Ich habe ein AlertDialog, dessen Inhalt ich immer wieder ändere, sobald ein Knopf (Weiter) gedrückt wird. Nun möchte ich, dass in einem bestimmten Fall die Buttons ausgewechselt werden.
Hintergrund der Applikation: Mit ihr soll man lernen können. Das Dialog zeigt eine Frage. Nachdem man weiter klickt, soll man die Möglichkeit für falsch/richtig haben. Egal was gedrückt wird: Es wird eine Frage angezeigt wieder mit dem Button Weiter. Das soll alles auf dem gleichen AlertDialog geschehen. Allerdings funktioniert meine Implementierung nicht und ich verstehe nicht wo mein Fehler liegt. Könnte sich das jemand schnell anschauen?
Code:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Frage");
builder.setView(flistview);
falert = builder.create();
//in einer Methode-->
public void nextQuestion(boolean next) {
buttonHandler(true);
falert.show();
buttonHandler(false);
}
public void buttonHandler(boolean cancel) {
if (cancel) {
Log.v("Button", "Canceltrue");
if (!optfselect[1]) {
falert.setButton(AlertDialog.BUTTON_POSITIVE, "Abbrechen",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.v("Button", "WTF1");
}
});
falert.setButton(AlertDialog.BUTTON_NEUTRAL, "Zurück",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextQuestion(false);
Log.v("Button", "WTF2");
}
});
falert.setButton(AlertDialog.BUTTON_NEGATIVE, "Weiter",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextQuestion(true);
Log.v("Button", "WTF3");
}
});
} else {
if (fanzeige) {
Log.v("Button", "fanzeige true");
falert.setButton(AlertDialog.BUTTON_POSITIVE, "Abbrechen",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
Log.v("Button", "WTF4");
}
});
falert.setButton(AlertDialog.BUTTON_NEUTRAL, "Weiter",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
nextQuestion(true);
Log.v("Button", "WTF5");
}
});
} else {
Log.v("Button", "fanzeige false");
falert.setButton(AlertDialog.BUTTON_POSITIVE, "Abbrechen",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
Log.v("Button", "WTF6");
}
});
falert.setButton(AlertDialog.BUTTON_NEUTRAL, "Falsch",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
nextQuestion(false);
Log.v("Button", "WTF7");
}
});
falert.setButton(AlertDialog.BUTTON_NEGATIVE, "Richtig",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
Log.v("Button", "WTF8");
}
});
}
}
} else {
Log.v("Button", "Cancelfalse");
if (!optfselect[1]) {
Button cancelButton = falert
.getButton(DialogInterface.BUTTON_POSITIVE);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bestaetigen();
Log.v("Button", "WT9");
}
});
Button backButton = falert
.getButton(DialogInterface.BUTTON_NEUTRAL);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nextQuestion(false);
Log.v("Button", "WTF10");
}
});
Button nextButton = falert
.getButton(DialogInterface.BUTTON_NEGATIVE);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nextQuestion(true);
Log.v("Button", "WTF11");
}
});
} else {
if (fanzeige) {
Log.v("Button", "fanzeige true");
Button cancelButton = falert
.getButton(DialogInterface.BUTTON_POSITIVE);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bestaetigen();
Log.v("Button", "WTF12");
}
});
Button nextButton = falert
.getButton(DialogInterface.BUTTON_NEUTRAL);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nextQuestion(true);
buttonHandler(false);
Log.v("Button", "WTF13");
}
});
} else {
Log.v("Button", "fanzeige false");
Button cancelButton = falert
.getButton(DialogInterface.BUTTON_POSITIVE);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bestaetigen();
Log.v("Button", "WTF14");
}
});
Button wrongButton = falert
.getButton(DialogInterface.BUTTON_NEUTRAL);
wrongButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("Button", "WTF15");
fwrong++;
wfragen.add(fcounter);
nextQuestion(true);
}
});
Button rightButton = falert
.getButton(DialogInterface.BUTTON_NEGATIVE);
rightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("Button", "WTF16");
nextQuestion(true);
}
});
}
}
}
}
Ich hab diese Methode, weil ich nicht möchte das sich mein Dialog nach einem Klick selbst schliesst (standardmässig). Deswegen setze ich nach dem show des Dialogs einen neuen Listener, damit sich das nicht selbst schliesst. Das Setzen des Listener funktioniert (er macht also die richtige Funktion), aber die Knöpfe werden nicht angezeigt. Cancel und optfselect[1] sind bei der Abfrage auf true, fanzeige auf false. Er macht also die setMethoden, aber es werden immer noch die alten Knöpfe angezeigt und das kann ich mir nicht erklären ...
Vielen Dank
MfG