本文介绍了当点击BadTokenException的Android微调异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个点击微调时(在弹出窗口)问题
I have a problem when clicking on a spinner ( in a popup window )
这是我的弹出:
public class PopupDialog extends PopupWindow {
public PopupDialog() {
super();
init();
}
public PopupDialog(View contentView, int width, int height) {
super(contentView, width, height);
init();
}
public PopupDialog(View contentView) {
super(contentView);
init();
}
private void init() {
this.setTouchable(true);
this.setFocusable(true);
this.setOutsideTouchable(true);
setBackgroundDrawable(new BitmapDrawable());
this.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
PopupDialog.this.dismiss();
return true;
}
return false;
}
});
}
}
按钮的点击,显示在弹出:
the click of the button that shows the popup:
public void click(View v) {
LayoutInflater layoutInflater
= (LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup, null);
final PopupDialog popupWindow = new PopupDialog(
popupView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
popupWindow.setHeight(metrics.heightPixels);
popupWindow.setWidth(300);
popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, v.getLeft()+v.getWidth(), 0);
}
我有这样的例外(BadTokenException)
I have this exception ( BadTokenException )
05-29 16:35:10.627: E/AndroidRuntime(1055): FATAL EXCEPTION: main
05-29 16:35:10.627: E/AndroidRuntime(1055): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@410ad298 is not valid; is your activity running?
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.view.ViewRootImpl.setView(ViewRootImpl.java:515)
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:279)
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.view.Window$LocalWindowManager.addView(Window.java:537)
05-29 16:35:10.627: E/AndroidRuntime(1055): at android.widget.PopupWindow.invokePopup(PopupWindow.java:988)
05-29 16:35:10.627: E/AndroidRuntime(1055): at and
欢迎任何帮助,谢谢提前:)
Any help is welcome, thank you in advance :)
推荐答案
有一个背景的冲突。尝试在你的XML微调声明添加此:的android:spinnerMode =对话
There is a context conflict. Try adding this in your XML spinner declaration : android:spinnerMode="dialog"
这篇关于当点击BadTokenException的Android微调异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!