这是我的代码:
myButton.setOnClickListener( new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
这给了我这个错误: 类型View中的方法setOnClickListener(View.OnClickListener)不适用于参数(new DialogInterface.OnClickListener(){})
我已导入DialogInterface和DialogInterface.OnClickListener。 “myButton”在对话框中。
这是我目前的设置。 button1启动Dialog,button2包含在Dialog中。
private void setOnClickListeners() {
button1.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
//set up dialog
Dialog dialog = new Dialog(WorkScreen.this);
dialog.setContentView(R.layout.dialog_layout);
dialog.setTitle("My Dialog");
dialog.setCancelable(true);
dialog.show();
}
});
button2.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
}
当Activity加载时崩溃。我也尝试将Dialog声明移到类的顶部并在onCreate中初始化它,但它没有改变任何东西。想法?
答案 0 :(得分:5)
当您需要处理Dialogs中的按钮但使用View.onclickListener来处理Activiy中的视图时,请使用DialogInterface.OnClickListener。
class MyDialog extends Dialog {
Context c ;
public MyDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
c = context ;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_layout) ;
Button b3 =(Button) findViewById(R.id.button3);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(c,"Button 3 has been clicked ",Toast.LENGTH_LONG).show();
}
});
}
}
我创建自定义对话框并处理此类对话框中的按钮
答案 1 :(得分:0)
您不希望将DialogInterface.OnClickListener用于按钮。您应该使用View.OnClickListener。
答案 2 :(得分:0)
因为Button类的setOnClickListener()方法需要一个View.OnClickListener()类型的参数,而不是DialogInterface.OnClickListener();
你应该能够这样使用它:
myButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
答案 3 :(得分:0)
DialogInterface.OnClickListener设置为对话框而不是按钮。触发click事件时,它会传递一个'which'参数,该参数告诉您单击了哪个按钮。要单独向按钮添加单击侦听器,请将View.OnClickListener设置为该按钮。