我有一堂课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中不再起作用。

最佳答案

对于此具体示例,我找到了以下解决方案:

我通过以下方式收到所需的 Activity :

nextActivity = (NavActivity)activityManager.getCurrentActivity();

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

以前,getDecorView可以正常工作:
View view = activity.getWindow().getDecorView();

然后回来:
Activity activity = (Activity) view.getContext();

但是在Android 7(牛轧糖)中,DecorView不再知道它与哪个 Activity 相关。目前尚不清楚该怎么办。

关于java - DecorContext强制转换 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41797836/

10-11 22:49
查看更多