为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

无法对非静态方法进行静态引用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

一个很好的问题是:你为什么要这样做?您正在尝试Stringstrings资源加载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字段。


查看完整回答
反对 回复 2019-05-28
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

对于在搜索中找到此内容的其他人:

当我不小心使用类名而不是对象名调用函数时,我经常得到这个。这通常是因为我给他们太相似的名字:P

即:

MyClass myclass = new MyClass();// then laterMyClass.someFunction();

这显然是一种静态方法。(对某些事情有好处)但我真正想做的事情(在大多数情况下是)

myclass.someFunction();

这是一个如此愚蠢的错误,但每隔几个月,我浪费了大约30分钟搞乱“MyClass”定义中的变量来解决我真正做错的事情,这只是一个错字。

有趣的说明:堆栈溢出突出了语法,使错误在这里显而易见。


查看完整回答
反对 回复 2019-05-28
  • 4 回答
  • 0 关注
  • 2471 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信