gpt4 book ai didi

android - 为什么 getTheme 在应用程序上不能很好地工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:47:40 30 4
gpt4 key购买 nike

我意识到,对于 Context.getTheme() , 如果我们使用 Application 通常效果不佳作为 Context

MyApplication.singletonInstance().getTheme().resolveAttribute(R.attr.actionBarDeleteIcon, typedValue, true);
// typedValue.resourceId will be 0x0, which is invalid

但是,如果我使用 Activity作为上下文,它运作良好

MyFragment.this.getActivity().getTheme().resolveAttribute(R.attr.actionBarDeleteIcon, typedValue, true);
// typedValue.resourceId is valid

我想知道为什么我们不能通过 Application 解析属性?

在 list 中,我们可以在 Application 找到特定的主题信息等级。所以,我想从 Application 获取主题对象确实有意义。

<application
android:theme="..."

最佳答案

它不起作用,因为 getApplicationContext() 返回的对象显然不是完整的 Context 对象,如前所述 in this answer by CommonsWare :

It's not a complete Context, supporting everything that Activity does. Various things you will try to do with this Context will fail, mostly related to the GUI.

一个可能的解决方案是在该 Context 上手动设置主题,如下所示:

getApplicationContext().getTheme().applyStyle(R.style.MyTheme, true);

但是这个方法并没有得到 Android 开发团队的认可;正确的解决方案是对与 UI 相关的事情使用 Activity,例如 getTheme()

关于android - 为什么 getTheme 在应用程序上不能很好地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15804858/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com