java - 在 strings.xml 中本地化字符串会产生 NullPointerException

标签 java android nullpointerexception localizable.strings getresource

由于工作相关问题,我安装 Eclipse 的工作计算机没有互联网连接,因此所有代码和 LogCat 文本都是手动输入的,而不是复制和粘贴的,因为我现在在一台单独的笔记本电脑上安装了 Eclipse。因此,请耐心等待我的任何拼写错误。

现在来说说这个问题。在我的应用程序的新版本中,我将其支持西类牙语。我在 strings.xml 中本地化了所有字符串。下面是我不用来实现的 Java 代码。

public class SplashScreen extends SwarmActivity {

  Context c;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashscreen);

    loading = (TextView)findViewById(R.id.loading);
    //loading.setText(c.getResources().setString(R.string.loading));  //This way gives NPE
    //loading.setText(R.string.loading);  //This way works
    //loading.setText("Test");  //This way works
  }
}

如果我正确理解本地化,我必须首先使用 getResources() ,以便应用程序知道要显示的字符串的语言。但 getResources() 才是让我困惑的地方。

我需要做什么才能正确显示字符串?

最佳答案

为了回答您的问题,您忘记初始化Context对象。所以c 为空。代替 loading.setText(c.getResources().setString(R.string.loading)); 通过

loading.setText(getResources().setString(R.string.loading));

但实际上没有必要这样做。

Android 在运行时根据设备的区域设置加载适当的资源。

您只需尊重项目中的这种层次结构即可:

res/
       values/
           strings.xml
       values-es / (here for spanish values)
           strings.xml
       values-fr /
           strings.xml (here for french values)

关于java - 在 strings.xml 中本地化字符串会产生 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362524/

相关文章:

java - 使用 For-Each 循环的类型转换错误

android - 如何检测是否在 jBox2D 中触摸了特定的物体

hadoop - Hadoop在减少步骤java.lang.NullPointerException时崩溃

java - Android 空指针异常/调用目标异常

Android MediaController 拦截所有其他触摸事件

android - SharedPreferences 空指针异常

java - 如何使用 MigLayout 将 JLabels 与 JPanel 上的一条线连接起来?

java - 假装客户端 : DecodeException: Error while extracting response

java - 在 apache camel 的 atom 组件中将 TLS 版本更改为 1.2

android - 如何加快在 Android 上打开 .png 位图的速度?