自定义警报对话框中的访问按钮
Access buttons in custom alert dialog
我使用以下代码创建了自定义警报对话框 -
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = this.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog, null))
.setTitle("test")
.setCancelable(true);
AlertDialog alert11 = builder.create();
alert11.show();
这是在警告对话框中使用的布局代码 dialog.xml -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set"/>
</LinearLayout>
现在,如何获取按钮的引用以设置点击侦听器?
我试过了 -
Button mButton = (Button) findViewById(R.id.button1);
但我得到一个例外 -
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setText(java.lang.CharSequence)' on a null object reference
还有其他方法可以访问该按钮吗?
你可以像这样访问一个按钮
Button dialogButton = (Button) alert11.findViewById(R.id.button1);
你找错了按钮。
View view = inflater.inflate(R.layout.dialog, null);
builder.setView(view)
.setTitle("test")
.setCancelable(true);
然后使用view
寻找你的按钮
您可以根据需要自定义完整的警报对话框..检查这个答案..
首先将您的自定义视图膨胀为
View dialoglayout = inflater.inflate(R.layout.dialog, null);
然后使用 dialoglayout
作为
builder.setView(dialoglayout)
.setTitle("test")
.setCancelable(true);
现在找到按钮
Button mButton = (Button) dialoglayout.findViewById(R.id.button1);
在你的情况下使用
Button mButton = (Button)(inflater.inflate(R.layout.dialog, null)). findViewById(R.id.button1);
使用此代码可以解决您的问题-
View view = (LinearLayout) getLayoutInflater()
.inflate(R.layout.dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(view);
final AlertDialog mDialog = builder.create();
mDialog.setCancelable(false);
Button mButton = (Button) view.findViewById(R.id.button1);
mDialog.show();
我使用以下代码创建了自定义警报对话框 -
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = this.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog, null))
.setTitle("test")
.setCancelable(true);
AlertDialog alert11 = builder.create();
alert11.show();
这是在警告对话框中使用的布局代码 dialog.xml -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set"/>
</LinearLayout>
现在,如何获取按钮的引用以设置点击侦听器?
我试过了 -
Button mButton = (Button) findViewById(R.id.button1);
但我得到一个例外 -
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setText(java.lang.CharSequence)' on a null object reference
还有其他方法可以访问该按钮吗?
你可以像这样访问一个按钮
Button dialogButton = (Button) alert11.findViewById(R.id.button1);
你找错了按钮。
View view = inflater.inflate(R.layout.dialog, null);
builder.setView(view)
.setTitle("test")
.setCancelable(true);
然后使用view
寻找你的按钮
您可以根据需要自定义完整的警报对话框..检查这个答案..
首先将您的自定义视图膨胀为
View dialoglayout = inflater.inflate(R.layout.dialog, null);
然后使用 dialoglayout
作为
builder.setView(dialoglayout)
.setTitle("test")
.setCancelable(true);
现在找到按钮
Button mButton = (Button) dialoglayout.findViewById(R.id.button1);
在你的情况下使用
Button mButton = (Button)(inflater.inflate(R.layout.dialog, null)). findViewById(R.id.button1);
使用此代码可以解决您的问题-
View view = (LinearLayout) getLayoutInflater()
.inflate(R.layout.dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(view);
final AlertDialog mDialog = builder.create();
mDialog.setCancelable(false);
Button mButton = (Button) view.findViewById(R.id.button1);
mDialog.show();