点击listview 中的按钮后,我试图显示确认对话框。
getView 方法中的 CustomAdapter 中有 setOnClickListener 。
但是在点击监听器上我收到以下错误:
02-25 21:36:32.065 20631-20631/com.themsg.chat W/Toast: From com.themsg.chat, go ahead.
02-25 21:36:32.095 20631-20631/com.themsg.chat W/System.err: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
02-25 21:36:32.095 20631-20631/com.themsg.chat W/System.err: at android.view.ViewRootImpl.setView(ViewRootImpl.java:569)
02-25 21:36:32.095 20631-20631/com.themsg.chat W/System.err: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:266)
02-25 21:36:32.095 20631-20631/com.themsg.chat W/System.err: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
02-25 21:36:32.095 20631-20631/com.themsg.chat W/System.err: at android.app.Dialog.show(Dialog.java:286)
这是我的代码:
holder.tvm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
chatroomMembers = getItem(position);
Toast.makeText(getContext(), "here", Toast.LENGTH_LONG).show();
new AlertDialog.Builder(v.getContext())
.setTitle("Title")
.setMessage("Do you really want to whatever?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
deleteUserFromChatrrom(chatroomMembers.getId(), SessionData.getInstance().getCurrentChatroom(), position);
}})
.setNegativeButton(android.R.string.no, null).show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
答案 0 :(得分:2)
在Class CustomAdapter中,您将一个变量mContext和一个ArrayList数据声明为ListView
ArrayList<String> datasource;
Context mContext;
创建一个构造函数:
public AdapterAudio(Context mContext, ArrayList<String> data) {
super();
this.datasoure = data;
this.mContext = mContext;
}
当您从Activity调用CustomAdapter时,“Activity_Main.this”是您需要的上下文
CustomAdapter adapter = new CustomAdapter(Activity_Main.this, listAudio_hienthi10);
现在你有一个Context,使用变量mContext声明替换
"getContext()", "v.getContext()"
现在,您可以在所需的CustomAdapter中单击按钮时显示或显示任何对话框。 享受您的代码!
答案 1 :(得分:0)
尝试使用getApplicationContext()
更改getContext()