我有一堂课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/