您的位置:首页 > 移动开发 > Android开发

com.android.internal.policy.DecorContext

2017-03-21 22:51 591 查看
异常:com.android.internal.policy.DecorContext cannot be cast to xxx.TaskInfoExamActivity

原因:

在android7.0开始DecorContext不能转换成activity。

要解决这种办法使用需要使用反射来处理原有代码。

解决办法:

正常情况:Activity activity =(Activity)view.getContext();

在android7.0 上述方法出错,要解决此问题,将上述方式给出调用如下方法即可:

public static Activity getActivity(View view) {
Activity activity = null;
if (view.getContext().getClass().getName().contains("com.android.internal.policy.DecorContext")) {
try {
Field field = view.getContext().getClass().getDeclaredField("mPhoneWindow");
field.setAccessible(true);
Object obj = field.get(view.getContext());
java.lang.reflect.Method m1 = obj.getClass().getMethod("getContext");
activity = (Activity) (m1.invoke(obj));

} catch (Exception e) {
e.printStackTrace();
}
} else {
activity = (Activity) view.getContext();
}
return activity;
}


调用示例:

Activity activity = getAcitivty(view);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 异常
相关文章推荐