当在位于片段中的popupwindow内按下微调器时app崩溃

时间:2015-11-02 18:33:12

标签: android android-spinner android-popupwindow

我有一个带按钮的片段。按下该按钮,如果输入的用户凭据与有效用户匹配(输入字段ara被检查请求休息api),则会显示一个带有微调器,textview和editext的弹出窗口。

凌空b.each_with_object({}) { |g,h| h.update(g["phone_number"]=>g) } onresponse方法中的

称为

onResponse()

createPopUpWindow

createPopUpWindow()

public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString(AppConfig.TAG_ERROR);
                        if (success.equals("true")){
                           errorresponseTtv.setText(jsonObject.getString(AppConfig.TAG_ERROR_MSG));
                        }
                        else{
                           errorresponseTtv.setText("Success!:\n User-> " + jsonObject.getString(AppConfig.TAG_USERNAME) + ", password-> " + jsonObject.getString(AppConfig.TAG_PASSWORD) + ", email-> " + jsonObject.getString(AppConfig.TAG_EMAIL));
                            inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                            View layout = inflater.inflate(R.layout.popup_login, null);

                            createPopUpWindow(layout);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

popupWindow按预期显示,但是当我按下微调器时出现问题。

日志消息private void createPopUpWindow(final View layout) { popupWindow = new PopupWindow(layout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); firmSpnr = (Spinner) layout.findViewById(R.id.firmSpnr); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, arrayList); firmSpnr.setAdapter(arrayAdapter); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new ShapeDrawable()); popupWindow.showAtLocation(layout, Gravity.CENTER, 0, 0); popupWindow.update(); } 是您的活动正在运行吗? 我搜索了其他人遇到的任何类似问题,我发现我必须推迟显示弹出窗口,直到调用所有生命周期方法。任何人都可以提供解决方法来解决错误吗?

记录错误消息

"Unable to add window -- token android.view.ViewRootImp"

2 个答案:

答案 0 :(得分:0)

在OnResponse else条件

中尝试此操作
 layout.post(new Runnable() {
        @Override
        public void run() {
            createPopUpWindow(layout);
        }
    });

而不是createPopUpWindow(layout);

答案 1 :(得分:0)

谷歌https://code.google.com/p/android/issues/detail?id=202246

报道了类似问题

但在发布Android支持库后,修订版23.2.1(2016年3月)此问题已得到解决。

修复了API级别21及以下的AppCompatSpinner兼容性崩溃

将支持库更新为Android Support Library to 23.2.1