【问题标题】:Android - getResources() and staticAndroid - getResources() 和静态
【发布时间】:2010-10-07 21:44:53
【问题描述】:

我有课

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener

为此,我尝试调用另一个类的方法。该方法包含:

mFoo.setTextColor(getResources().getColor(R.color.orange))

但它不起作用。它告诉我getResources 不是静态的...我该如何更改?

【问题讨论】:

    标签: android static


    【解决方案1】:

    但它不起作用,它告诉我,getResources 不是静态的......我该如何改变?

    这意味着您正在尝试从静态方法调用getResources(),而不是常规(实例)方法。在您的情况下,如果mFooTextView 或其他一些小部件,最简单的方法是在小部件提供的Context 上调用getResources()

    mFoo.setTextColor(mFoo.getContext().getResources().getColor(R.color.orange));
    

    但是,您尝试从静态方法中引用名为 mFoo 的小部件这一事实吓坏了我。这只是要求内存泄漏。我认为您确实需要重新考虑使用静态数据成员和方法。

    【讨论】:

    • 谢谢。我的起源问题是,我想从类首选项中调用一个属于 myClass 的方法。所以当偏好发生变化时,它必须从“外国”类中调用一个方法,也许你可以给我一个提示,如何解决这个问题?!
    • @Christoph:您不想尝试从您的PreferenceActivity 更新一些其他活动的小部件。使用registerOnSharedPreferenceChangeListener() 让您的其他活动注册偏好更改。当偏好更改时,Activity 会收到通知并可以进行调整。
    • 好的,这就是我以前做过的事情,我想,有一种方法可以最小化我的“其他活动”中的代码,找出 ChangeListener..
    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2023-02-01
    • 2014-09-14
    • 2012-11-23
    • 2017-06-13
    相关资源
    最近更新 更多