android 如何从列表视图按钮显示警报确认对话框
How to show alert confirmation dialog from listview button in android
我试图在单击列表视图中的按钮后显示确认对话框。
我的 CustomAdapter 中的 getView 方法中有 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();
}
}
});
尝试将 getContext() 更改为 getApplicationContext()
在 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" 是您需要的 Context
CustomAdapter adapter = new CustomAdapter(Activity_Main.this, listAudio_hienthi10);
现在你有了一个Context,使用声明的变量mContext来替换
"getContext()", "v.getContext()"
现在您可以在您想要的 CustomAdapter 中单击 Button 时 Toast 或显示任何对话框。
享受你的代码!
我试图在单击列表视图中的按钮后显示确认对话框。
我的 CustomAdapter 中的 getView 方法中有 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();
}
}
});
尝试将 getContext() 更改为 getApplicationContext()
在 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" 是您需要的 Context
CustomAdapter adapter = new CustomAdapter(Activity_Main.this, listAudio_hienthi10);
现在你有了一个Context,使用声明的变量mContext来替换
"getContext()", "v.getContext()"
现在您可以在您想要的 CustomAdapter 中单击 Button 时 Toast 或显示任何对话框。 享受你的代码!