Как сделать окно редактирования в диалоговом окне
Я пытаюсь сделать окно edittext в диалоговом окне для ввода пароля.
и когда я делаю, я не могу делать. Я в этом новичок.
Пожалуйста, помогите мне в этом.
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();
}
});
7 ответов:
Использовать Контекст Activtiy
заменить
final EditText input = new EditText(this);By
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); // uncomment this line
Я знаю, что это слишком поздно, чтобы ответить на этот вопрос, но для других, которые ищут что-то похожее на это вот простой код alertbox с edittext
AlertDialog.Builder alert = new AlertDialog.Builder(this);или
new AlertDialog.Builder(mContext, R.style.MyCustomDialogTheme);Если вы хотите сменить тему диалога.
final EditText edittext = new EditText(ActivityContext); alert.setMessage("Enter Your Message"); alert.setTitle("Enter Your Title"); alert.setView(edittext); alert.setPositiveButton("Yes Option", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { //What ever you want to do with the value Editable YouEditTextValue = edittext.getText(); //OR String YouEditTextValue = edittext.getText().toString(); } }); alert.setNegativeButton("No Option", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // what ever you want to do with No option. } }); alert.show();
упрощенная версия
final EditText taskEditText = new EditText(this); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("Add a new task") .setMessage("What do you want to do next?") .setView(taskEditText) .setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String task = String.valueOf(taskEditText.getText()); SQLiteDatabase db = mHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task); db.insertWithOnConflict(TaskContract.TaskEntry.TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE); db.close(); updateUI(); } }) .setNegativeButton("Cancel", null) .create(); dialog.show(); return true;
попробовать ниже код:
alert.setTitle(R.string.WtsOnYourMind); final EditText input = new EditText(context); input.setHeight(100); input.setWidth(340); input.setGravity(Gravity.LEFT); input.setImeOptions(EditorInfo.IME_ACTION_DONE); alert.setView(input);
проще всего было бы.
создать xml-файл макета для диалога . Добавить любой вид, который вы хотите, как EditText, ListView, Spinner и др.
раздуть это представление и установить его в AlertDialog
давайте сначала начнем с файла макета.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <EditText android:id="@+id/etComments" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top" android:hint="Enter comments(Optional)" android:inputType="textMultiLine" android:lines="8" android:maxLines="3" android:minLines="6" android:scrollbars="vertical" /> </LinearLayout>
final View view = layoutInflater.inflate(R.layout.xml_file_created_above, null); AlertDialog alertDialog = new AlertDialog.Builder(ct).create(); alertDialog.setTitle("Your Title Here"); alertDialog.setIcon("Icon id here"); alertDialog.setCancelable(false); Constant.alertDialog.setMessage("Your Message Here"); final EditText etComments = (EditText) view.findViewById(R.id.etComments); alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertDialog.dismiss() } }); alertDialog.setView(view); alertDialog.show();
вы также можете создать пользовательский диалог оповещения, создав xml-файл.
dialoglayout.xml
<EditText android:id="@+id/dialog_txt_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:hint="Name" android:singleLine="true" > <requestFocus /> </EditText> <Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="60dp" android:background="@drawable/red" android:padding="5dp" android:textColor="#ffffff" android:text="Submit" /> <Button android:id="@+id/btn_cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/btn_login" android:background="@drawable/grey" android:padding="5dp" android:text="Cancel" />Java-Код:
@Override//to popup alert dialog public void onClick(View arg0) { // TODO Auto-generated method stub showDialog(DIALOG_LOGIN); }); @Override protected Dialog onCreateDialog(int id) { AlertDialog dialogDetails = null; switch (id) { case DIALOG_LOGIN: LayoutInflater inflater = LayoutInflater.from(this); View dialogview = inflater.inflate(R.layout.dialoglayout, null); AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this); dialogbuilder.setTitle("Title"); dialogbuilder.setView(dialogview); dialogDetails = dialogbuilder.create(); break; } return dialogDetails; } @Override protected void onPrepareDialog(int id, Dialog dialog) { switch (id) { case DIALOG_LOGIN: final AlertDialog alertDialog = (AlertDialog) dialog; Button loginbutton = (Button) alertDialog .findViewById(R.id.btn_login); Button cancelbutton = (Button) alertDialog .findViewById(R.id.btn_cancel); userName = (EditText) alertDialog .findViewById(R.id.dialog_txt_name); loginbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = userName.getText().toString(); Toast.makeText(Activity.this, name,Toast.LENGTH_SHORT).show(); }); cancelbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); } }); break; } }
настройка поля в параметрах макета не будет работать в Alertdialog. вы должны установить заполнение в Родительском макете, а затем добавить edittext в этом макете.
Это мой рабочий код Котлин...
val alert = AlertDialog.Builder(context!!) val edittext = EditText(context!!) edittext.hint = "Enter Name" edittext.maxLines = 1 val layout = FrameLayout(context!!) //set padding in parent layout layout.setPaddingRelative(45,15,45,0) alert.setTitle(title) layout.addView(edittext) alert.setView(layout) alert.setPositiveButton(getString(R.string.label_save), DialogInterface.OnClickListener { dialog, which -> run { val qName = edittext.text.toString() Utility.hideKeyboard(context!!, dialogView!!) } }) alert.setNegativeButton(getString(R.string.label_cancel), DialogInterface.OnClickListener { dialog, which -> run { dismiss() } }) alert.show()
Comments