中易网

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

答案:3  悬赏:0  
解决时间 2021-01-19 17:32
android中怎么监听自定义对话框中的button按钮
最佳答案
我知道你出现什么问题了,你是不是写了一个类继承了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);
}
}

注意*****行里面
全部回答
自定义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);
}
}
和正常的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(){。。。。}就行了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苏家的祖先是谁
茶叶上火车卖要啥手续
神奇阿呦片头曲歌手闪闪资料
羽翼舞蹈学校地址在哪,我要去那里办事
方向企业 瓷砖怎么样
我现在是大专语文教研室主任,想发表2篇省级
商网伯乐教育地址在什么地方,想过去办事
离开了我过得好不好这首歌想表达什么意思
造梦西游3凌霄宝殿之后该打什么
用cad画室外给水排水管网平面图的详细步骤
夫妻a一b-杂合子能要小孩吗?
艺蒙商务宾馆怎么去啊,我要去那办事
明明自己很清楚答案,偏要去问别人,想要得到
父亲把儿子研究成绿具人的电影叫什么名字
儿童早教机充不上电咋回事
推荐资讯
电脑机箱电源买很大有问题吗?
这种是什么笔,不要说是什么水彩笔,具体一点
左肋下,胯骨上痛
四大名著各拍了多少年?
急易贷是骗子,大家要小心,他们自称是平安易
去眼部细纹最好的眼霜?怎样有效去除眼角纹?
宝宝一个半月两天一次排便正常吗?
我想和女朋友去香港一日游,计划去南丫岛和海
botox注射可以除皱吗?
百吉强排热水器不打火
卵泡涨到2.6后排了为什么没有怀孕?
季新村怎么去啊,我要去那办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?