Próbuję utworzyć pole edycyjne w oknie dialogowym do wprowadzania hasła. a kiedy to robię, nie jestem w stanie tego zrobić. Jestem w tym początkujący. Proszę, pomóż mi w tym.
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();
}
});
Wizerunek
Chcę dostać jak
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();
}
});
android
dialog
android-edittext
Wątek
źródło
źródło
Odpowiedzi:
Użyj kontekstu Activtiy
Wymień to
Przez
źródło
Dialog dialog = new Dialog(MainActivity.this)
. Myślę skopiowany kod od gdzie indziej Chybapublic void onClick(DialogInterface dialog
jest to okno dialogowe. korzystanie z tego nie stanowi problemu, kliknij przycisk negatywny, aby zamknąć alertdialog.Wiem, że jest za późno, aby odpowiedzieć na to pytanie, ale dla innych, którzy szukają czegoś podobnego do tego tutaj, jest prosty kod alertu z edycją
lub
jeśli chcesz zmienić temat okna dialogowego.
źródło
Najprostsze byłoby.
Utwórz plik układu XML dla okna dialogowego. Dodaj dowolny widok, taki jak EditText, ListView, Spinner itp.
Napompuj ten widok i ustaw na AlertDialog
Najpierw zacznijmy od pliku układu.
źródło
Wersja uproszczona
źródło
Wypróbuj poniższy kod:
źródło
Ustawienie marginesu w parametrach układu nie będzie działać w Alertdialog. musisz ustawić dopełnienie w układzie nadrzędnym, a następnie dodać tekst edytujący w tym układzie.
To jest mój działający kod Kotlin ...
źródło
Możesz także utworzyć niestandardowe okno dialogowe alertu, tworząc plik xml.
dialoglayout.xml
Kod Java:
źródło
Odpowiedź Wasima poprowadziła mnie we właściwym kierunku, ale musiałem wprowadzić pewne zmiany, aby działała w moim obecnym projekcie. Używam tej funkcji w fragmencie i wywołuję ją po kliknięciu przycisku.
Mam nadzieję, że pomoże to komuś innemu w najbliższej przyszłości. Miłego kodowania!
źródło