Ich versuche, ein Edittext-Feld in einem Dialogfeld zur Eingabe eines Passworts zu erstellen. und wenn ich es tue, kann ich es nicht tun. Ich bin ein Anfänger darin. Bitte helfen Sie mir dabei.
public class MainActivity extends Activity {
Button create, show, setting;
//String pass="admin";String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
create = (Button)findViewById(R.id.amcreate);
setting = (Button)findViewById(R.id.amsetting);
show = (Button)findViewById(R.id.amshow);
//input = (EditText)findViewById(R.id.this);
setting.setVisibility(View.INVISIBLE);
create.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent1 = new Intent(view.getContext(), Create.class);
startActivityForResult(myIntent1, 0);
}
});
show.setOnClickListener(new View.OnClickListener() {
//@SuppressWarnings("deprecation")
public void onClick(final View view) {
// Creating alert Dialog with one Button
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
//AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
// Setting Dialog Title
alertDialog.setTitle("PASSWORD");
// Setting Dialog Message
alertDialog.setMessage("Enter Password");
**final EditText input = new EditText(this);**
//alertDialog.setView(input);
// Setting Icon to Dialog
alertDialog.setIcon(R.drawable.key);
// Setting Positive "Yes" Button
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
// Write your code here to execute after dialog
Toast.makeText(getApplicationContext(),"Password Matched", Toast.LENGTH_SHORT).show();
Intent myIntent1 = new Intent(view.getContext(), Show.class);
startActivityForResult(myIntent1, 0);
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to execute after dialog
dialog.cancel();
}
});
// closed
// Showing Alert Message
alertDialog.show();
}
});
Bild
Ich möchte als bekommen
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("PASSWORD");
alertDialog.setMessage("Enter Password");
final EditText input = new EditText(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
alertDialog.setView(input);
alertDialog.setIcon(R.drawable.key);
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
password = input.getText().toString();
if (password.compareTo("") == 0) {
if (pass.equals(password)) {
Toast.makeText(getApplicationContext(),
"Password Matched", Toast.LENGTH_SHORT).show();
Intent myIntent1 = new Intent(view.getContext(),
Show.class);
startActivityForResult(myIntent1, 0);
} else {
Toast.makeText(getApplicationContext(),
"Wrong Password!", Toast.LENGTH_SHORT).show();
}
}
}
});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
});
Antworten:
Verwenden Sie den Aktivitätskontext
Ersetzen Sie dies
Durch
quelle
Dialog dialog = new Dialog(MainActivity.this)
. Ich denke, Sie haben Ihren Code von einem anderen Ort kopiertpublic void onClick(DialogInterface dialog
Es ist die Dialogschnittstelle. Wenn dies kein Problem ist, klicken Sie auf die negative Schaltfläche, um den Alarmdialog zu schließen.Ich weiß, dass es zu spät ist, um diese Frage zu beantworten, aber für andere, die nach etwas Ähnlichem suchen, ist hier ein einfacher Code einer Alertbox mit einem Edittext
oder
Wenn Sie das Thema des Dialogfelds ändern möchten.
quelle
Am einfachsten wäre es.
Erstellen Sie eine XML-Layoutdatei für den Dialog. Fügen Sie eine beliebige Ansicht wie EditText, ListView, Spinner usw. hinzu.
Blasen Sie diese Ansicht auf und setzen Sie sie auf AlertDialog
Beginnen wir zuerst mit der Layoutdatei.
quelle
Vereinfachte Version
quelle
Versuchen Sie den folgenden Code:
quelle
Das Festlegen des Randes in Layoutparametern funktioniert in Alertdialog nicht. Sie müssen die Auffüllung im übergeordneten Layout festlegen und dann Edittext in diesem Layout hinzufügen.
Dies ist mein funktionierender Kotlin-Code ...
quelle
Sie können auch einen benutzerdefinierten Warndialog erstellen, indem Sie eine XML-Datei erstellen.
dialoglayout.xml
Der Java-Code:
quelle
Wasims Antwort führte mich in die richtige Richtung, aber ich musste einige Änderungen vornehmen, damit es für mein aktuelles Projekt funktioniert. Ich benutze diese Funktion in einem Fragment und rufe sie beim Klicken auf die Schaltfläche auf.
Ich hoffe, es hilft in naher Zukunft jemand anderem. Viel Spaß beim Codieren!
quelle