我刚刚创建了一个包含多个项目的警报对话框。我在每个项目中都设置了string.xml值的文本,但未显示corect值。
代码如下:
private void showImageImportDialog() {
String[] items = new String[]{String.valueOf(R.string.open_camera), String.valueOf(R.string.open_gallery)};
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(R.string.select_image);
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0){
......
}
if (which == 1) {
......
}
}
});
dialog.create().show();
}
string.xml
<resources>
<string name="open_camera">Camera</string>
<string name="open_gallery">Gallery</string>
<string name="select_image">Select Image</string>
答案 0 :(得分:0)
String.valueOf(R.string.open_camera)
并不是如何从Android中的资源ID获取文本。为此,您必须使用getString(R.string.open_camera)
。
答案 1 :(得分:0)
从xml中获取字符串的正确形式是
getString(R.string.select_image)
示例:
dialog.setTitle(getString(R.string.select_image));
答案 2 :(得分:0)
您做错了很多事情。首先,您可以在字符串资源中声明数组。我已经重写了您的代码以使其正常工作。
复制以下代码并将其粘贴到您的字符串资源文件中(例如res/string.xml
)
<string-array name="titles">
<item>Camera</item>
<item>Gallery</item>
<item>Select Image</item>
</string-array>
然后,用以下代码替换您的Java代码。
private void showImageImportDialog() {
String[] items = getResources().getStringArray(R.array.titles);
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(items[2]);
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.create().show();
}
现在应该可以工作。