我有一个带按钮的片段。按下该按钮,如果输入的用户凭据与有效用户匹配(输入字段ara被检查请求休息api),则会显示一个带有微调器,textview和editext的弹出窗口。
凌空b.each_with_object({}) { |g,h| h.update(g["phone_number"]=>g) }
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"
答案 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