Я пытаюсь сделать поле редактирования текста в диалоговом окне для ввода пароля. и когда я делаю, я не могу делать. Я новичок в этом. Пожалуйста, помогите мне в этом.
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();
}
});
Образ
Я хочу получить как
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();
}
});
Ответы:
Используйте Activtiy Context
Замени это
По
источник
Dialog dialog = new Dialog(MainActivity.this)
. Я думаю, что вы скопировали свой код из другого места, где я думаюpublic void onClick(DialogInterface dialog
это интерфейс диалога. использование этого не является проблемой, вы нажимаете отрицательную кнопку, чтобы закрыть алертилдиалог.Я знаю, что уже слишком поздно, чтобы ответить на этот вопрос, но для тех, кто ищет что-то похожее на это здесь, это простой код окна оповещения с правкой
или
если вы хотите изменить тему диалога.
источник
Проще всего было бы.
Создать XML-файл макета для диалога. Добавить любой вид, который вы хотите, как EditText, ListView, Spinner и т. Д.
Раздуйте это представление и установите это в AlertDialog
Давайте начнем с файла макета в первую очередь.
источник
Упрощенная версия
источник
Попробуйте код ниже:
источник
Установка поля в параметрах макета не будет работать в Alertdialog. Вы должны установить отступы в родительском макете, а затем добавить текст редактирования в этом макете.
Это мой рабочий код Котлин ...
источник
Вы также можете создать собственный диалог с предупреждением, создав файл XML.
dialoglayout.xml
Код Java:
источник
Ответ Васима привел меня в правильном направлении, но мне пришлось внести некоторые изменения, чтобы он работал для моего текущего проекта. Я использую эту функцию во фрагменте и вызываю ее по нажатию кнопки.
Я надеюсь, что это поможет кому-то еще в ближайшем будущем. Удачного кодирования!
источник