我在XML文件中定义了以下字符串
<string name="Url_Google">https://google.com</string>
要动态获取Url_Google的值,我可以使用
Toast.makeText(this, getResources().getString(R.string.Url_Google), Toast.LENGTH_SHORT).show();
现在,我在 ActivitySample.java 文件中有两个字符串
String One = "Url";
String Two = "Google";
String Three = One + "_" + Two;
String Three 的值为 Url_Google
如何使用 String Three
在XML文件中获取Url_Google的String值 编辑:道歉。最后的陈述不清楚。我不想编辑XML文件中定义的String值。我只是想使用字符串“Url_Google”从XML文件中获取Url_Google的值由于
答案 0 :(得分:2)
根据官方Android文档,您可以使用以下方法:
getIdentifier
<强>则getIdentifier 强>
int getIdentifier (String name, String defType, String defPackage)
返回给定资源名称的资源标识符。完全 限定资源名称的格式为&#34; package:type / entry&#34;。首先 如果defType和,则两个组件(包和类型)是可选的 defPackage分别在这里指定。
注意:不鼓励使用此功能。效率更高 按标识符而不是按名称检索资源。
参数name String:所需资源的名称。
defType
String
:可选的默认资源类型,如果&#34;输入/&#34;是 不包括在名称中。可以为null以要求显式类型。
defPackage
字符串:可选的默认包,如果&#34;包:&#34;是 不包括在名称中。可以为null以要求显式包。返回int int关联的资源标识符。如果不是,则返回0 找到了这样的资源。 (0不是有效的资源ID。)
因此,使用getIdentifier()
查找id
的资源Url_Google
,然后将此id
传递给getResources().getString(id)
int id = getResources().getIdentifier("Url_Google", "string", YourActivity.this.getPackageName())
答案 1 :(得分:2)
请试试这个..可以解决你的问题
public static String byValueName(Context context, String name) {
Resources res = context.getResources();
return res.getString(res.getIdentifier(name, "string", context.getPackageName()));
}
答案 2 :(得分:1)
你可以这样做:
<string name="one">Url</string>
<string name="two">Google</string>
<string name="Url_Google">%1$s_%2$s</string>
然后
Toast.makeText(this,
String.format(getResources().getString(R.string.Url_Google),
getResources().getString(R.string.one),
getResources().getString(R.string.two)),
Toast.LENGTH_SHORT).show();
答案 3 :(得分:1)
您无法在运行时更改/添加资源。确切地说,您无法在运行时修改pod install
文件夹中的任何内容,因此您可以像现在一样将其添加到res
,或者无法通过编程定义的String将其添加到strings.xml
你提出了
答案 4 :(得分:1)
您无法以编程方式修改资源数据。编译应用程序时,aapt
将生成R类,其中包含res /目录中所有资源的资源ID。对于每种类型的资源,都有一个R子类(例如,所有可绘制资源的R.drawable),对于该类型的每个资源,都有一个静态整数(例如,R.drawable.icon)。此整数是可用于检索资源的资源ID。
因此,您无法以编程方式更新资源。
替代,
您可以使用Sharedprefrence
替代。
答案 5 :(得分:0)
试试这个
String One = "Url";
String Two = "Google";
String Three = One + "_" + Two;
int String_id = getResources().getIdentifier(Three, "string", BrowserMainActivity.this.getPackageName());
Toast.makeText(getApplicationContext(), String_id, 0).show();