无法对非静态方法进行静态引用Java构建多语言应用程序。从R.string资源XML文件插入String值时出错:public static final String TTT = (String) getText(R.string.TTT);这是错误消息:错误:无法从Context类型对非静态方法getText(int)进行静态引用这是怎么造成的,我该如何解决?
4 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
已经有一些很好的答案,解释了为什么非静态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
TA贡献1803条经验 获得超6个赞
对于在搜索中找到此内容的其他人:
当我不小心使用类名而不是对象名调用函数时,我经常得到这个。这通常是因为我给他们太相似的名字:P
即:
MyClass myclass = new MyClass();// then laterMyClass.someFunction();
这显然是一种静态方法。(对某些事情有好处)但我真正想做的事情(在大多数情况下是)
myclass.someFunction();
这是一个如此愚蠢的错误,但每隔几个月,我浪费了大约30分钟搞乱“MyClass”定义中的变量来解决我真正做错的事情,这只是一个错字。
有趣的说明:堆栈溢出突出了语法,使错误在这里显而易见。
添加回答
举报
0/150
提交
取消