java – DecorContext强制转换

我有一个NavActivity类

public class NavActivity extends Activity implements OnItemLongClickListener {
....
}

在另一个类的函数中,我有以下代码:

    LocalActivityManager activityManager = this.getLocalActivityManager();
    Window window = activityManager.startActivity(tag, intent);

    final View view = window.getDecorView();
    Context decorContext = view.getContext();

    NavActivity nextActivity;
    nextActivity = (NavActivity)decorContext;

在以前的Android版本中,一切都运行良好.但在Android 7.0中.它在此行停止并显示以下错误:

引起:java.lang.ClassCastException:com.android.internal.policy.DecorContext无法强制转换为xxxxx.nav.NavActivity

不明白为什么从DecorContext转换为Activity在Android 7.0中不再起作用.

最佳答案 对于这个具体的例子,我找到了以下解决方案:

我收到了所需的活动:

nextActivity = (NavActivity)activityManager.getCurrentActivity();

但是在我的项目中,无论如何我需要从Activity接收正确的View,然后从Activity接收View.

以前,getDecorView运行良好:

View view = activity.getWindow().getDecorView();

然后回来:

Activity activity = (Activity) view.getContext();

但是在Android 7(Nougat)中,DecorView不再知道它与哪个Activity有关.目前还不清楚该怎么做.

点赞