android - 在popupwindow中过滤listview

时间:2017-05-31 04:51:52

标签: android listview android-popupwindow

我无法过滤listview ,它位于Popupwindow中。

失败并出现异常

android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@150769 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>

你能提供指示吗?

1 个答案:

答案 0 :(得分:0)

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

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