在PopupWindow中放置了一个EditText和一个button,点击button的时候会检查EditText,如果内容为空就使用setError()提示用户。这个时候如果只显示一个提示的icon就正常,但是当EditText onFocus的时候,应该会再弹出一个提示信息的气球,这时候就报错了……PopupWindow popup = new PopupWindow(SettingScreen.this);
popup.setWindowLayoutMode(FP, FP);
    View view = getLayoutInflater().inflate(R.layout.set_new_password, null); final EditText edit_newLockCode = (EditText) view.findViewById(R.id.EditText_Setting_New_Chain);
final EditText edit_newConfirmLockCode = (EditText) view.findViewById(R.id.EditText_Setting_New_ConfirmChain);
Button btn_setNewLockCode = (Button) view.findViewById(R.id.Button_Setting_New_SetChain); popup.setContentView(view);
popup.setFocusable(true);
popup.showAsDropDown(blowTopUI); btn_setNewLockCode.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String newlockCode = edit_newLockCode.getText().toString().trim();
String newConfirmLockCode = edit_newConfirmLockCode.getText().toString().trim();
if (newlockCode == null|| newlockCode.length() == 0) {
edit_newLockCode.setError("Empty");  //当这个edittext聚焦时,此句报错
}
});报错信息:09-20 08:58:55.019: ERROR/AndroidRuntime(5196): Uncaught handler: thread main exiting due to uncaught exception
09-20 08:58:55.053: ERROR/AndroidRuntime(5196): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRoot$W@44c5ccf0 is not valid; is your activity running?
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.ViewRoot.setView(ViewRoot.java:468)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.widget.PopupWindow.invokePopup(PopupWindow.java:821)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:754)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.widget.TextView.showError(TextView.java:3311)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.widget.TextView.onFocusChanged(TextView.java:6436)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.View.handleFocusGainInternal(View.java:2445)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.View.requestFocus(View.java:3562)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2400)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.os.Looper.loop(Looper.java:123)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at android.app.ActivityThread.main(ActivityThread.java:4363)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at java.lang.reflect.Method.invokeNative(Native Method)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at java.lang.reflect.Method.invoke(Method.java:521)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-20 08:58:55.053: ERROR/AndroidRuntime(5196):     at dalvik.system.NativeStart.main(Native Method)个人理解是不是当前的activity被这个PopupWindow阻挡了,所以才会问“is your activity running?”,那个气球是不是也是类似一个PopupWindow之类的东西,在一个PopupWindow上是不能再显示另一个PopupWindow的?求教各位高手~拜谢~

解决方案 »

  1.   

    木有人知道吗,试过在PopupWindow里面用getParent()的方法获取上一层的activity也不行~
      

  2.   

    我认为不可以同时弹出2个信息框。弹出一个提示信息的气球的时候让你的popwindows消失就可以。在消失的同时保存一下你的数据。气球消失了popowindows再出现。
      

  3.   

    我看过源码,setError的气球就是用PopupWindow做的,你在PopupWindow上再弹出个PopupWindow...我觉得有点不靠谱