Ich bin ein Autodidakt Anfänger und schätzen Geduld! Vielen Dank!OnClickListener in benutzerdefinierten alertdialog Android
In Eclipse habe ich einen benutzerdefinierten Alertdialog mit einer eigenen XML-Datei ("custom_dialog") erstellt und heißt "usernamealert".
Ich möchte einen Popup-Alarm erhalten, wenn der Benutzer noch keinen Benutzernamen eingegeben hat (zB benutzername.length == 0).
In diesem Layout habe ich eine textView ("Wie heißt du?"), EditText und button ("benutzernameButton").
Bevor Sie den onclicklistener für den Button einfügten, funktionierte alles. Das war mein (relevantes) Java:
LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) getCurrentFocus());
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this);
usernamebuilder.setView(dialoglayout);
AlertDialog usernamealert = usernamebuilder.create();
Als ich den onclicklistener reinsteckte, brach es! Wo soll ich es haben?
(Folgendes ist, was ich versucht hatte, ... alles in meinem OnCreate)
LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)getCurrentFocus());
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this);
usernamebuilder.setView(dialoglayout);
Button usernameButton = (Button) usernamealert.findViewById(R.id.usernameButton);
usernameButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//store username in sharedprefs
usernamealert.dismiss();
}
});
Nach dem Code, den ich sagte:
if (username.length() == 0) {
usernamealert.show();
}
Wieder ist es arbeitete, bevor ich mit der begonnenen Messing Taste!!
Afte Nach stundenlangem Suchen und dem Veröffentlichen der Frage habe ich es erst 2 Minuten später herausgefunden! Alles, was ich anders hätte tun sollen, war ändern, wie es die Schaltfläche gefunden: Button usernameButton = (Button) usernamealert.findViewById (R.id.usernameButton); sollte es gewesen sein: Button usernameButton = (Button) dialoglayout.findViewById (R.id.usernameButton); // Dialoglayout ist was auch immer Sie die Ansicht – delfina
Willkommen bei StackOverflow! Können Sie Ihre Lösung bitte als Antwort posten und als richtige Antwort akzeptieren, nachdem Sie es zugelassen haben. Das wird es den Menschen in Zukunft leichter machen, die Lösung zu finden, wenn sie das gleiche Problem haben. – FoamyGuy
Ihre Antwort hat mir geholfen .. obwohl bitte machen Sie Ihre Antwort besser lesbar .. Ich werde meine Antwort unter – mcr619619