android中怎么监听自定义对话框中的button按钮

 我来答
ya失足成千古恨
2012-03-24 · TA获得超过119个赞
知道答主
回答量:33
采纳率:0%
帮助的人:54.4万
展开全部
我知道你出现什么问题了,你是不是写了一个类继承了Dialog,然后再实例化,这个dialog,但是button按钮美发添加监听器是不?

如果你要是自己继承了DIalog的话,那么我们看看源码把!

Dialog
implements DialogInterface

也就是说Dialog继承了 DialogInterface这个接口

好的 我们再看看DialogInterface这个接口把
我们会发现DialogInterface 有一个方法:
public static interface OnClickListener
{

public abstract void onClick(DialogInterface dialoginterface, int i);
}

好的 那么也就是如果我们继承了Dialog的话,我们同样也继承了DialogInterface这个接口的ONclickListner方法所以我们再给button设置onclicklistner的时候就会出错,因为本身就是不同包的东西,现在放到一个类里面肯定就会出错!

解决方法:在给button 设置点击事件的时候,加上完整的包名就行了!

专门给你敲了个例子你看看:

Activity里面:
public class QuestionActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Dialog ad = new MyDialog(this);
ad.show();
return super.onKeyDown(keyCode, event);
}

}

自定义Dialog里面:

public class MyDialog extends Dialog {
Context context;

public MyDialog(Context context) {
super(context);
this.context = context;
init();
}

public void init() {
LinearLayout ll = new LinearLayout(context);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));

Button btn = new Button(context);
btn.setText("hello");

/************************************************************/
btn.setOnClickListener(new android.view.View.OnClickListener() {

@Override
public void onClick(View view) {
Toast.makeText(context, "hello", 0).show();
MyDialog.this.dismiss();
}
});
/**********************************************************/

ll.addView(btn);
this.setContentView(ll);
}
}

注意*****行里面
adasmy
2012-03-23 · TA获得超过415个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:263万
展开全部
和正常的button一样,你在自定义的Mydialog中,肯定是嵌套了自己写的布局,如下
LayoutInflater in = LayoutInflater.from(context);
View temp = in.inflate(R.layout.mydialog, null);
ok = (Button)temp.findViewById(R.id.button_moduledialog_ok);
这样就找到这个自定义布局中的ok按钮了,然后就
ok.setOnClickListener(){。。。。}就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0c1b06d
2012-03-24
知道答主
回答量:5
采纳率:0%
帮助的人:3.5万
展开全部
自定义Dialog里面:

public class MyDialog extends Dialog {
Context context;

public MyDialog(Context context) {
super(context);
this.context = context;
init();
}

public void init() {
LinearLayout ll = new LinearLayout(context);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));

Button btn = new Button(context);
btn.setText("hello");

/************************************************************/
btn.setOnClickListener(new android.view.View.OnClickListener() {

@Override
public void onClick(View view) {
Toast.makeText(context, "hello", 0).show();
MyDialog.this.dismiss();
}
});
/**********************************************************/

ll.addView(btn);
this.setContentView(ll);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式