android中怎么监听自定义对话框中的button按钮
3个回答
展开全部
我知道你出现什么问题了,你是不是写了一个类继承了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的话,那么我们看看源码把!
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);
}
}
注意*****行里面
展开全部
和正常的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(){。。。。}就行了
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(){。。。。}就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自定义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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询