Android - getResources() and static

6

我有一个类

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener

在这里,我尝试从另一个类中调用一个方法。该方法包含:

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

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

13

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

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

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

然而,你试图从一个静态方法中引用名为mFoo的小部件的事实让我非常惊恐。这只会导致内存泄漏。我认为你真的需要重新考虑你使用静态数据成员和方法的方式。


谢谢。我的起始问题是,我想从类Preferences中调用属于myClass的方法。因此,当首选项更改时,它必须从“外部”类调用一个方法,也许您可以给我一些提示,如何解决这个问题?! - Christoph
@Christoph:你不想从PreferenceActivity尝试更新其他活动的小部件。让其他活动使用registerOnSharedPreferenceChangeListener()注册偏好更改。当偏好更改时,活动会收到通知并进行调整。 - CommonsWare
好的,这是我以前做过的事情,我认为有一种方法可以最小化我的“其他活动”中的代码,将ChangeListener分离出来。 - Christoph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接