2017-05-31 85 views
0

我不能在popupwindow里面过滤列表视图android-在popupwindow里面过滤listview

它失败,异常

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:679) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) 
     at android.widget.PopupWindow.invokePopup(PopupWindow.java:1378) 
     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1154) 
     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1121) 
     at android.widget.AbsListView.positionPopup(AbsListView.java:5665) 
     at android.widget.AbsListView.showPopup(AbsListView.java:5651) 
     at android.widget.AbsListView.onTextChanged(AbsListView.java:6095) 
     at android.widget.TextView.sendOnTextChanged(TextView.java:8187) 
     at android.widget.TextView.setText(TextView.java:4483) 
     at android.widget.TextView.setText(TextView.java:4337) 
     at android.widget.EditText.setText(EditText.java:89) 
     at android.widget.TextView.setText(TextView.java:4312) 
     at android.widget.AbsListView.setFilterText(AbsListView.java:1944) 

我显示PopupWindow为:

popupWindow.showAtLocation(getWindow().getDecorView(), Gravity.CENTER, 0, 0); 

弹出布局是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <EditText 
     android:hint="" /> 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </ListView> 
</RelativeLayout> 

你能提供指针?

+0

提供适用于listview的适配器代码? –

+0

我解决了这个问题,通过使用对话框而不是popupwindow – GJain

回答

0

我认为问题在于您显示的弹出窗口太早显示。在runnable中使用showatlocation,如下所示

new Handler().postDelayed(new Runnable(){ 
    public void run() { 
     pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); 
    } 
}, 100L); 
+0

问题是弹出窗口内的列表过滤。我能够显示弹出。但是,当列表过滤发生时,它会尝试显示另一个弹出窗口,引发异常。 – GJain

+0

尝试使用runnable,如果它工作或发布您的代码,将找出问题。 –