由于与工作相关的问题,安装了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)