无法对非静态方法进行静态引用

无法对非静态方法进行静态引用

Java构建多语言应用程序。从R.string资源XML文件插入String值时出错:

public static final String TTT =  (String) getText(R.string.TTT);

这是错误消息:

错误:无法从Context类型对非静态方法getText(int)进行静态引用

这是怎么造成的,我该如何解决?


开满天机
浏览 2517回答 4
4回答

慕的地6264312

已经有一些很好的答案,解释了为什么非静态Context方法的混合物getText()不能用于你的static final String。一个很好的问题是:你为什么要这样做?您正在尝试String从strings资源加载a ,并将其值填充到public static字段中。我认为这是为了让你的其他一些类可以访问它?如果是这样,就没有必要这样做了。而是将a传递Context到您的其他类并context.getText(R.string.TTT)从其中调用。public class NonActivity {     public static void doStuff(Context context) {         String TTT = context.getText(R.string.TTT);         ...     }}并从你这称呼Activity:NonActivity.doStuff(this);这将允许您访问您的String资源,而无需使用public static字段。

慕码人8056858

对于在搜索中找到此内容的其他人:当我不小心使用类名而不是对象名调用函数时,我经常得到这个。这通常是因为我给他们太相似的名字:P即:MyClass myclass = new MyClass();// then laterMyClass.someFunction();这显然是一种静态方法。(对某些事情有好处)但我真正想做的事情(在大多数情况下是)myclass.someFunction();这是一个如此愚蠢的错误,但每隔几个月,我浪费了大约30分钟搞乱“MyClass”定义中的变量来解决我真正做错的事情,这只是一个错字。有趣的说明:堆栈溢出突出了语法,使错误在这里显而易见。
打开App,查看更多内容
随时随地看视频慕课网APP