我有一个包含带有onClick事件的AlertDialog的onClickListener事件,我想获取父onClick事件视图,例如:
View.OnClickListener listener = new View.OnClickListener(){
public void onClick(View v){
//need to pass v to alert's onClickListener
AlertDialog.Builder alert = new AlertDialog.Builder(MyClass.this);
alert.setPositiveButton("Go", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//need parent onClick's View as v
String str = v.getTag().toString();
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
}
});
}
};
知道怎么做到这一点?我无法在onclicklistener中调用(View)findViewById(id),因为这将应用于以编程方式创建的多个项目
答案 0 :(得分:7)
变化
public void onClick(View v)
到
public void onClick(final View v)
这将允许您访问对话框按钮的onClickListener中的单击视图。
答案 1 :(得分:0)
你忘了打电话了
alert.show();
没有这个,对话框将不会显示
完整源代码:
someViewItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
AlertDialog.Builder alert = new AlertDialog.Builder(MyActivity.this);
alert.setMessage("abcd");
alert.setPositiveButton("Go",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
String str = "aaa";
Toast.makeText(getApplicationContext(),
str, Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
});