如何在对话框中创build一个编辑文本框

我正在尝试在input密码的对话框中编辑一个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(); } }); 

使用Activtiy上下文

replace这个

  final EditText input = new EditText(this); 

通过

  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 

我知道为时已晚回答这个问题,但对于其他正在寻找类似于这里的东西的人来说,这是一个带有edittext的alertbox的简单代码

 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(); 

尝试下面的代码:

 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); 

简化版本

 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; 

最简单的将是。

  • 创build对话框的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(); 

您也可以通过创build一个xml文件来创build自定义警报对话框。

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; } }