自定义AlertDialog.Builder添加自定义按钮事件点击
问题描述:
在我的自定义“警报对话框”我有一个两难的问题,我已经在xml上声明的按钮上设置onclick。自定义AlertDialog.Builder添加自定义按钮事件点击
此代码给了我已经证实,有一个实际的alertDialog在此之后被实施
close.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
alertDialog.dismiss();
}
});
LayoutInflates被点击的ListView的项目后一个空指针异常。
我的问题是“你如何设置自定义xml onClickListeners自定义AlertDialog上的按钮?”
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root));
TextView text = (TextView) layout.findViewById(R.id.data1);
ImageView image = (ImageView) layout.findViewById(R.id.dialog_image);
image.setImageResource(R.drawable.temp_book);
Button summary, confirm, close;
summary = (Button)findViewById(R.id.Summary);
confirm = (Button)findViewById(R.id.confirmCD);
close = (Button)findViewById(R.id.closeCD);
builder = new AlertDialog.Builder(this);
builder.setView(layout);
close.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
alertDialog.dismiss();
}
});
alertDialog = builder.create();
alertDialog.show();
日志错误
02-28 15:13:28.385: E/AndroidRuntime(6763): FATAL EXCEPTION: main
02-28 15:13:28.385: E/AndroidRuntime(6763): java.lang.NullPointerException
02-28 15:13:28.385: E/AndroidRuntime(6763): at test.list.A_Test4Activity.onListItemClick(A_Test4Activity.java:532)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.widget.AbsListView$1.run(AbsListView.java:3168)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.os.Handler.handleCallback(Handler.java:605)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.os.Handler.dispatchMessage(Handler.java:92)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.os.Looper.loop(Looper.java:137)
02-28 15:13:28.385: E/AndroidRuntime(6763): at android.app.ActivityThread.main(ActivityThread.java:4340)
02-28 15:13:28.385: E/AndroidRuntime(6763): at java.lang.reflect.Method.invokeNative(Native Method)
02-28 15:13:28.385: E/AndroidRuntime(6763): at java.lang.reflect.Method.invoke(Method.java:511)
02-28 15:13:28.385: E/AndroidRuntime(6763): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-28 15:13:28.385: E/AndroidRuntime(6763): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-28 15:13:28.385: E/AndroidRuntime(6763): at dalvik.system.NativeStart.main(Native Method)
答
没有看到任何踪迹与例外,我会说,你不看,你应该寻找Button
密切。如果您将AlertDialog
的布局设置为您膨胀的自定义布局或构建的代码View
,那么您必须对执行findViewById(R.id.Id_of_button)
,您将其设置为AlertDialog
内容。
编辑:
的接近Button
是null
(和投掷NullPointerException
调用它的方法时),因为你必须寻找在布局中Button
以前膨胀并用作AlertDialog
内容:
close = (Button) layout.findViewById(R.id.closeCD);
不要忘了总结和确认Buttons
如果他们也在膨胀的布局。
+0
我已经这么做了。为了避免混淆,我将发布我当前使用的代码以及作为日志错误。 – wesdfgfgd 2012-02-28 20:25:07
您膨胀的'Dialog'自定义布局中的close按钮? – Luksprog 2012-02-28 20:32:01
AlertDialog.Builder builder = null; &AlertDialog alertDialog = null; 全球宣布。 – wesdfgfgd 2012-02-28 20:32:20
它膨胀在一个选定项目的列表视图点击。 – wesdfgfgd 2012-02-28 20:33:05