由于与工作相关的问题,安装了Eclipse的我的工作计算机没有Internet连接,因此所有代码和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
  }
}


如果我正确理解localization,则必须首先获取getResources(),以便该应用程序知道要显示的字符串语言。但是getResources()真是让我感到困惑。

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

最佳答案

为了回答您的问题,您忘记了初始化Context object。因此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)

10-08 03:02