小编Exp*_*ind的帖子

BadTokenException:无法添加窗口 - 令牌null无效; 你的活动在运行吗?in activity.isFinishing statment

我有一个popUpWindow需要通过显示,几秒后,如果用户仍在当前活动.我实现了检查活动是否未完成/销毁然后显示弹出窗口,并且它适用于周末用户:)(从活动到活动慢慢点击)但在高压测试中(活动正在重新创建,完成,快速移动形式)活动到活动)给我的错误:

E/UncaughtException:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null无效; 你的活动在运行吗?在android.view.WindowManager上运行android.view.WindowManager全局调查(WindowManagerGlobal.java:341)的android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)上的android.view.ViewRootImpl.setView(ViewRootImpl.java:598). PopupWindow.invokePopup(PopupWindow.java:1279)位于android.widget.PopupWindow.showAtLocation(PopupWindow.java:1040)的android.widget.PopupWindow.showAtLocation(PopupWindow.java:1003)com.guides4art.app.ImageSlider.RatePopUp $ 3.run(RatePopUp.java:86)在android.os.Handler.handleCallback(Handler.java:743)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper) .java:150)在android.app.ActivityThread.main(ActivityThread.java:5546)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit) .java:794)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

码:

   private void showPopUpWindow(final Activity context){


       popupWindow = new PopupWindow(context);

       LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(
               LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
       popupWindow.setHeight(layoutParams.height);
       popupWindow.setWidth(layoutParams.width);
       popupWindow.setOutsideTouchable(true);
       popupWindow.setTouchable(true);
       popupWindow.setFocusable(true);
       popupWindow.setContentView(view);


       ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
           @Override
           public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
               if(context instanceof CarSale) {
                   ((CarSale) context).saveRate((int) rating);
                    ((CarSale) context).initRate();
                   title.setText(""+context.getString(R.string.thanksForRate));
               }
               else
                   Log.i("kamil","error");
           }
       });
       closeButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               popupWindow.dismiss();
           }
       });


if(!context.isFinishing() …
Run Code Online (Sandbox Code Playgroud)

android popupwindow android-activity

6
推荐指数
1
解决办法
1万
查看次数

分页库,重置 PageKeyedDataSource

我使用 Android Paging 库为我的列表实现了无限滚动。我根据页面从 API 中下载数据。我的应用程序允许用户通过在 API 查询中添加一些参数来过滤项目。启用过滤后,我喜欢将parameters字段更改为PageKeyedDataSource实例并重置加载程序(我想将页面设置为 1 并在其中调用 loadInitial 方法)

DataSource(private var initialData: List<Data>, var parameters: HashMap<String, String>) : PageKeyedDataSource<Int, Data>() {


    override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, Data>) {
        callback.onResult(initialData, null, 2)
    }

    override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, Data>) {

        val page = params.key
        parameters[PAGE] = page.toString()
        val request = ApiRequest()

        request.setOnDataObtainListener {
            callback.onResult(it,page.inc())
        }

        request.getData(parameters)
    }

    override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<Int, Data>) {

    }

    fun reset(initialData: List<Data>, parameters: HashMap<String, String>) …
Run Code Online (Sandbox Code Playgroud)

android filtering pagedlist kotlin

6
推荐指数
1
解决办法
710
查看次数

Endless RecyclerView,结束时重复数据

我想制作基于 RecyclerView 的列表,用户可以无限滚动。上面只有几个项目,但是每当用户滚动到末尾时,列表的第一个项目就会出现等等。此功能可以在两个滚动方向上工作。

android listview android-recyclerview

3
推荐指数
1
解决办法
3605
查看次数