vag*_*ire 6 android android-context android-activity android-7.0-nougat
在Android 7上,获取DecorView返回DecorContext类的上下文并且它不是Activity.我曾经使用过活动,Activity a = (Activity)view.getContext()但它不适用于Android 7上的DecorView.有没有有效的方法从DecorView获取活动?
我正在使用反射来获取DecorView的窗口,然后获取该窗口的上下文(这是一个Acitivity).
Field f = decorView.getClass().getDeclaredField("mWindow");
f.setAccessible(true);
Window w = (Window) f.get(decorView);
Activity a = (Activity) w.getContext();
Run Code Online (Sandbox Code Playgroud)
有没有办法使用标准API?
在Android 7(Nougat)中,Android引入了多窗口功能,使您可以在屏幕上一次打开2个活动(无论是您的活动还是2个不同的活动).要做到这一点,他们推出了一个名为新类DecorContext由使用DecorView.该DecorContextIS(报价)"文脉装饰的观点,可以用纯播种应用程序上下文和不依赖于活动,但仍提供了一些该活动有设施,如主题,基于活动的资源,等等." 这意味着DecorView不再知道Activity它与哪个相关,而只知道它与哪个相关Application.因此,从牛轧糖前进,不能得到Activity从DecorView孤单.
不确定它是否仍与您相关,但您可以这样做:
Activity a = (Activity) decorView.findViewById(android.R.id.content).getContext();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |