Android 嵌套onclick侦听器
我正在编写一个程序,显示一系列按钮,每个按钮代表某个城市的不同景点。单击按钮后,一个对话框将向用户显示两个选项,“更多信息”和“映射信息”。点击“更多信息”按钮将引导用户访问景点的网站,“地图”按钮将显示一个带有景点谷歌地图的页面 我的问题是,每当单击景点的按钮时,我都需要生成一个包含两个按钮的AlertDialogBox,这两个按钮都有自己的OnClickListener。当我尝试在AlertDialogBox上创建两个按钮时,就会出现问题。我得到一个错误,无法创建按钮 在另一个程序中,我尝试创建了一个AlertDialogBox,效果很好,所以我不确定问题出在哪里。我的代码在下面Android 嵌套onclick侦听器,android,android-alertdialog,Android,Android Alertdialog,我正在编写一个程序,显示一系列按钮,每个按钮代表某个城市的不同景点。单击按钮后,一个对话框将向用户显示两个选项,“更多信息”和“映射信息”。点击“更多信息”按钮将引导用户访问景点的网站,“地图”按钮将显示一个带有景点谷歌地图的页面 我的问题是,每当单击景点的按钮时,我都需要生成一个包含两个按钮的AlertDialogBox,这两个按钮都有自己的OnClickListener。当我尝试在AlertDialogBox上创建两个按钮时,就会出现问题。我得到一个错误,无法创建按钮 在另一个程序中,我尝试
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(getApplicationContext())
.setTitle(name)
.setIcon(R.drawable.ic_launcher)
.setMessage("Get More Information")
.setNegativeButton(1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
)
intent = new Intent();
}
})
.create()
.show();
}
});
方法
setNegativeButton(int-textId,DialogInterface.OnClickListener-listener)
将文本资源id作为参数。例如:R.string.my_string
,或R.string.app_name
或其他任何内容。找不到资源,因此无法创建AlertDialog
你可能想改变你的想法
setNegativeButton(int-textId,DialogInterface.OnClickListener-listener)
call
您也可以使用setNegativeButton(CharSequence text,DialogInterface.OnClickListener listener)
将CharSequence(字符串是CharSequence,您可以传递一个)作为参数(文本)显示在按钮上,如:“更多信息”
或“映射它”
另外,您可以使用v.getContext()
来代替getApplicationContext()
尝试以下方法:
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
.setTitle(name)
.setIcon(R.drawable.ic_launcher)
.setMessage("Get More Information")
.setPositiveButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do operations
}
})
.setNegativeButton("Close",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
您没有正确实现
.setNegativeButton()
方法,理想情况下,它应该有两个参数
字符串
(即“Hello”)或字符串
中的strings.xml
文件中定义的资源(即R.string.hello)
res/values
文件夹
DialogInterface.onClickListener()
要单击对话框按钮,可以在其onClick中执行以下操作:
任务
理想的AlertDialog
代码可能如下所示:
AlertDialog.Builder builder = new AlertDialog.Builder()
builder.setTitle("Hello World")
builder.setMessage("India is incredible.")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Do something on Positive button click
.
.
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Do something on Negative button click
.
.
}
})
.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
// Do Something on Back key press
.
.
}
return false;
}
}).create().show();
有关
AlertDialog.Builder
方法的更多详细信息,请参阅此处的参考文档是否可以包含错误消息?