我有一个类
public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener
在这里,我尝试从另一个类中调用一个方法。该方法包含:
mFoo.setTextColor(getResources().getColor(R.color.orange))
但它并不起作用。告诉我
getResources
不是静态的...我该如何更改?但它不起作用,它告诉我,getResources不是静态的...我该如何更改?
这意味着您试图从静态方法而不是常规(实例)方法中调用getResources()
。在您的情况下,最简单的方法是,如果mFoo
是TextView
或其他小部件,则在小部件提供的Context
上调用getResources()
:
mFoo.setTextColor(mFoo.getContext().getResources().getColor(R.color.orange));
然而,你试图从一个静态方法中引用名为mFoo
的小部件的事实让我非常惊恐。这只会导致内存泄漏。我认为你真的需要重新考虑你使用静态数据成员和方法的方式。
PreferenceActivity
尝试更新其他活动的小部件。让其他活动使用registerOnSharedPreferenceChangeListener()
注册偏好更改。当偏好更改时,活动会收到通知并进行调整。 - CommonsWare