Jestem stosunkowo nowy w systemie Android/Java. Dzięki Stack Overflow mogłem się wiele nauczyć od pytań zadawanych tutaj. Jednak teraz utknąłem na tym problemie.Wyświetlanie wielu AlertDialogs
Mam hasło wejściowe AlertDialog
, które pojawia się po uruchomieniu aplikacji. Odczytuje hasło z EditText
i porównuje je z tym zapisanym w pliku. Potrzebowałem dodatkowego AlertDialog
, który pojawia się, gdy podane jest nieprawidłowe/błędne hasło. To też zaimplementowałem.
Teraz ten drugi dialog ma dwa przyciski - Resetuj i Ponów. Chcę, aby w działaniu ponownie wyświetlane było pierwsze okno dialogowe, gdy klikniemy Ponów próbę. Tutaj nie mam pojęcia. Jeśli ktokolwiek może dostarczyć działające rozwiązanie i małe wyjaśnienie, będę bardzo zobowiązany.
Oto mój kod:
LayoutInflater li = LayoutInflater.from(context);
View passView = li.inflate(R.layout.authdialog, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(passView);
final EditText passInput = (EditText) passView.findViewById(
R.id.editTextDialogUserInput);
final TextView txtv = (TextView) findViewById(R.id.textv);
// set dialog message
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String data = "";
try {
FileInputStream fis = openFileInput("authfile");
InputStreamReader in = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(in);
data = br.readLine();
} catch (Exception e) {
e.printStackTrace();
}
if (data.toString().equals(
passInput.getText().toString())) {
txtv.setText("You Have Logged in");
} else {
LayoutInflater ln = LayoutInflater.from(context);
View invalidView = ln.inflate(R.layout.invdialog,
null);
AlertDialog.Builder invalidDialogBuild = new AlertDialog.Builder(
context);
invalidDialogBuild.setView(invalidView);
// set dialog message
invalidDialogBuild
.setCancelable(false)
.setPositiveButton(
"Retry",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int id) {
dialog.cancel();
}
})
.setNegativeButton(
"Reset",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int id) {
dialog.cancel();
}
});
dialog.cancel();
AlertDialog invalidDialog = invalidDialogBuild
.create();
// show it
invalidDialog.show();
}
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
Wiem, że niektóre okna dialogowe działają już częściowo. Ale w rzeczywistości uważam, że lepiej nie używać okien dialogowych do tego celu. Zamiast tego mogę mieć mój ekran logowania 'Activity' z' EditView' dla nazwy użytkownika i hasła, przycisku Submit itp. Mam również komunikat 'TextView', który aktualizuję na czerwono i komunikat (używając' theTextView.setText ("") 'jeśli dana osoba nie zaloguje się, w ten sposób nie wyskakuje nic po prostu zmieniając tekst wiadomości, aby ostrzec użytkownika, że jego nazwa użytkownika jest nieprawidłowa – wired00
W rzeczywistości jest to aplikacja tylko dla jednej osoby, w której nie potrzebują nazwy użytkownika, ale tylko hasło I muszę to zrobić na ekranie powitalnym, zamiast po wyświetleniu ekranu przez 2 sekundy lub mniej, hasło musi zostać zadane.Możesz podejść do tego poprzez okno dialogowe, zmieniając po prostu widok tekstu, który jest na górze zamiast wyskakiwania nowa wiadomość, ale wtedy nie będzie opcji resetowania Czy mogę mieć trzy przyciski w oknie dialogowym z ostrzeżeniem – GunJack