里面弹出微调不开放 [英] Spinner inside popup not opening
本文介绍了里面弹出微调不开放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图打开里面弹出一个微调,但是当我点击它没有任何反应。
私人无效showTwitterPopUp()
{
查看popUpView = getLayoutInflater()膨胀(R.layout.twitter_popup,NULL);
mpopup =新PopupWindow(MainActivity.this);
mpopup.setWidth(this.getWindowManager()getDefaultDisplay()的getWidth());
mpopup.setHeight(this.getWindowManager()getDefaultDisplay()的getHeight()/ 2);
mpopup.setContentView(popUpView);
mpopup.setAnimationStyle(android.R.style.Animation_Dialog);
mpopup.setFocusable(真);
mpopup.showAtLocation(popUpView,Gravity.CENTER,200,200);
mpopup.setBackgroundDrawable(新BitmapDrawable());
mpopup.setOutsideTouchable(真); 账户=(按钮)popUpView.findViewById(R.id.button_create_account);
BDAY =(按钮)popUpView.findViewById(R.id.button_birthday);
电子邮件=(EditText上)popUpView.findViewById(R.id.edittext_email);
性=(微调)popUpView.findViewById(R.id.spinner_sex);
取消=(按钮)popUpView.findViewById(R.id.button_cancel); ArrayAdapter<&CharSequence的GT;适配器1 =新ArrayAdapter<&CharSequence的GT;(这一点,android.R.layout.simple_spinner_item,AppConstants.SEX);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sex.setAdapter(新CustomSpinnerAdapter(适配器1,的getString(R.string.sex),这个));
}
在单击微调,然后解雇窗口给予例外。
13 07-16:07:35.434:E / AndroidRuntime(23444):java.lang.IllegalStateException:与视图android.widget.PopupWindow$PopupViewContainer@42e3c588调用但ViewAncestor是连接到空
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:396)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.WindowManagerImpl $ CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:174)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.widget.PopupWindow.dismiss(PopupWindow.java:1256)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.widget.ListPopupWindow.dismiss(ListPopupWindow.java:612)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.widget.Spinner.onDetachedFromWindow(Spinner.java:411)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.View.dispatchDetachedFromWindow(View.java:11815)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2534)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:2640)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewRootImpl.doDie(ViewRootImpl.java:3993)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.ViewRootImpl.die(ViewRootImpl.java:3976)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:390)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.WindowManagerImpl $ CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:174)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.widget.PopupWindow.dismiss(PopupWindow.java:1256)
07-16 13:07:35.434:E / AndroidRuntime(23444):在com.incbit.mygivingbook.MainActivity.onClick(MainActivity.java:235)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.View.performClick(View.java:4110)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.view.View $ PerformClick.run(View.java:17001)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.os.Handler.handleCallback(Handler.java:615)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.os.Handler.dispatchMessage(Handler.java:92)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.os.Looper.loop(Looper.java:137)
07-16 13:07:35.434:E / AndroidRuntime(23444):在android.app.ActivityThread.main(ActivityThread.java:4854)
07-16 13:07:35.434:E / AndroidRuntime(23444):在java.lang.reflect.Method.invokeNative(本机方法)
07-16 13:07:35.434:E / AndroidRuntime(23444):在java.lang.reflect.Method.invoke(Method.java:511)
07-16 13:07:35.434:E / AndroidRuntime(23444):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:789)
07-16 13:07:35.434:E / AndroidRuntime(23444):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
07-16 13:07:35.434:E / AndroidRuntime(23444):在dalvik.system.NativeStart.main(本机方法)
解决方案
首先,你需要初始化 PopupWindow
与 popupView
其中创建:
mpopup =新PopupWindow(popUpView);
然后,你需要通过在父以 showAtLocation
而不是popUpView:
查看布局= findViewById(R.layout.twitter_layout);
mpopup.showAtLocation(布局,Gravity.CENTER,200,200);
从developer.android.com:
参数:父父视图摆脱
的getWindowToken()令牌
块引用>I trying to open a spinner inside popup but when I click at it nothing happens.
private void showTwitterPopUp() { View popUpView = getLayoutInflater().inflate(R.layout.twitter_popup, null); mpopup = new PopupWindow(MainActivity.this); mpopup.setWidth(this.getWindowManager().getDefaultDisplay().getWidth()); mpopup.setHeight(this.getWindowManager().getDefaultDisplay().getHeight()/2); mpopup.setContentView(popUpView); mpopup.setAnimationStyle(android.R.style.Animation_Dialog); mpopup.setFocusable(true); mpopup.showAtLocation(popUpView, Gravity.CENTER, 200, 200); mpopup.setBackgroundDrawable(new BitmapDrawable()); mpopup.setOutsideTouchable(true); account = (Button) popUpView.findViewById(R.id.button_create_account); bday = (Button) popUpView.findViewById(R.id.button_birthday); email = (EditText)popUpView.findViewById(R.id.edittext_email); sex = (Spinner) popUpView.findViewById(R.id.spinner_sex); cancel = (Button) popUpView.findViewById(R.id.button_cancel); ArrayAdapter<CharSequence> adapter1 = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item , AppConstants.SEX); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sex.setAdapter(new CustomSpinnerAdapter(adapter1,getString(R.string.sex),this)); }
on clicking spinner and then dismissing window giving exception.
07-16 13:07:35.434: E/AndroidRuntime(23444): java.lang.IllegalStateException: Calling with view android.widget.PopupWindow$PopupViewContainer@42e3c588 but the ViewAncestor is attached to null 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:396) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.WindowManagerImpl$CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:174) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.widget.PopupWindow.dismiss(PopupWindow.java:1256) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.widget.ListPopupWindow.dismiss(ListPopupWindow.java:612) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.widget.Spinner.onDetachedFromWindow(Spinner.java:411) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.View.dispatchDetachedFromWindow(View.java:11815) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2534) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2532) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:2640) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewRootImpl.doDie(ViewRootImpl.java:3993) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.ViewRootImpl.die(ViewRootImpl.java:3976) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:390) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.WindowManagerImpl$CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:174) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.widget.PopupWindow.dismiss(PopupWindow.java:1256) 07-16 13:07:35.434: E/AndroidRuntime(23444): at com.incbit.mygivingbook.MainActivity.onClick(MainActivity.java:235) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.View.performClick(View.java:4110) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.view.View$PerformClick.run(View.java:17001) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.os.Handler.handleCallback(Handler.java:615) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.os.Handler.dispatchMessage(Handler.java:92) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.os.Looper.loop(Looper.java:137) 07-16 13:07:35.434: E/AndroidRuntime(23444): at android.app.ActivityThread.main(ActivityThread.java:4854) 07-16 13:07:35.434: E/AndroidRuntime(23444): at java.lang.reflect.Method.invokeNative(Native Method) 07-16 13:07:35.434: E/AndroidRuntime(23444): at java.lang.reflect.Method.invoke(Method.java:511) 07-16 13:07:35.434: E/AndroidRuntime(23444): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 07-16 13:07:35.434: E/AndroidRuntime(23444): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 07-16 13:07:35.434: E/AndroidRuntime(23444): at dalvik.system.NativeStart.main(Native Method)
解决方案First, you need to initialise the
PopupWindow
with thepopupView
which you created:
mpopup = new PopupWindow(popUpView);
Then you need to pass the parent view to
showAtLocation
instead of the popUpView:View layout = findViewById(R.layout.twitter_layout); mpopup.showAtLocation(layout, Gravity.CENTER, 200, 200);
From developer.android.com:
Parameters: parent a parent view to get the getWindowToken() token from
这篇关于里面弹出微调不开放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文