我有 MainActivity 我有一个打开对话框的按钮。单击此按钮后,我的对话框框架将打开,现在此对话框中有两个文本字段和两个按钮。
如何通过单击其中一个按钮来更改该字段中的文本?
我尝试了一些技巧,但我总是得到NullPointerException
。
提前致谢!
我有 MainActivity 我有一个打开对话框的按钮。单击此按钮后,我的对话框框架将打开,现在此对话框中有两个文本字段和两个按钮。
如何通过单击其中一个按钮来更改该字段中的文本?
我尝试了一些技巧,但我总是得到NullPointerException
。
提前致谢!
我会使用自定义对话框。
您需要使用对话框对象来查找ViewById 并初始化视图。
对话框.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:layout_marginRight="58dp"
android:text="Cancel" />
<EditText
android:id="@+id/ed1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginTop="56dp"
android:layout_toLeftOf="@+id/button2"
/>
<EditText
android:id="@+id/ed2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_alignParentTop="true"
android:layout_marginTop="16dp"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginRight="27dp"
android:layout_marginTop="39dp"
android:text="ChangeText" />
</RelativeLayout>
然后在您的活动中说单击按钮
dialogPopup();
然后
public void dialogPopup()
{
final Dialog d = new Dialog(MainActivity.this); // initialize dialog
d.setContentView( R.layout.dialog);
d.setTitle("my title");
final EdiText ed1= (TextView) d.findViewById(R.id.ed1);
// initialize edittext using the dialog object.
final EdiText ed2= (TextView) d.findViewById(R.id.ed2);
Button b = (Button) d.findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() // button 1 click
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// on click of button 1 change the text in textview's
ed1.setText("Changing text 1");
ed2.setText("Changing text 2");
}
});
Button b1 = (Button) d.findViewById(R.id.button2); // button2 click
b1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
d.dismiss(); // dismiss dialog
}
});
d.show(); // show the dialog
}
当您使用 AlertDialog.Builder 创建对话框时,设置 Button 的 onClickListener 以更改 EditText 的值:
AlertDialog.Builder dialog = new AlertDialog.Builer(this);
...
final EditText edit = new EditText(this);
dialog.setView(edit);
...
dialog.setPositiveButton("Change the freakin text",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id){
edit.setText("bla bla bla");
}
});
...