如何从此资源 int: android.R.string.cancel 获取字符串值“cancel”?
谢谢你
只需使用Context#getString()
:
String string = getString(android.R.string.cancel);
我已经尝试过这种方法但没有成功......我有一堂课:
public class MyDialogFragment extends DialogFragment {
DialogFragment 不是 Context 的子类,因此您需要访问有效的(例如您的 Activity)。用这个:
String string = getActivity().getString(android.R.string.cancel);
或者,正如您发现的那样,您可以使用传入的 Activity onAttach()
,但要明白,只要您有一个有效的 Context 可以使用,您就可以在 Fragment 内的任何地方执行此操作。
如此处所示:http: //developer.android.com/reference/android/content/Context.html#getString(int)
String s = context.getString(android.R.string.cancel);
context
可以是当前活动,也可以是任何继承Context
抽象类的对象。
我知道这是一个老问题,但它可能会帮助更多的人。您可以做的是调用 getIdentifier()。为此,您需要调用它在您想要的 this 变量的值之后插入,以生成您想要的资源 ID 字符串。举个例子:
您的资源文件:
R.string.cancel
在java中:
int resourceId = getResources().getIdentifier("cancel", "string", this.getPackageName())
println(getResources().getString(resourceId));
然后,在您的 resourceId 变量中,您将拥有一个等价于:R.string.cancel。而且,在 println 中,您将拥有资源字符串的对应值。
在科特林:
val resourceId = this.resources.getIdentifier("cancel", "string", this.packageName)
println(resources.getString(resourceId))
和我之前说的一样的解释。
这会将任何 Android 资源转换为字符串。在此示例中,我使用了“R.color.myColor”,但它适用于任何 Android 资源类型。
颜色.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="btnDialBgColor">#00BFA5</color>
<color name="btnDialBgColorActive">#C51162</color>
</resources>
TypedValue typedValueActive = new TypedValue();
TypedValue typedValue = new TypedValue();
getResources().getValue(R.color.btnDialBgColorActive, typedValueActive, true);
getResources().getValue(R.color.btnDialBgColor, typedValue, true);
希望这可以帮助。