33

如何从此资源 int: android.R.string.cancel 获取字符串值“cancel”?

谢谢你

4

4 回答 4

62

只需使用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 内的任何地方执行此操作。

于 2012-11-14T22:30:43.273 回答
7

如此处所示:http: //developer.android.com/reference/android/content/Context.html#getString(int)

String s = context.getString(android.R.string.cancel);

context可以是当前活动,也可以是任何继承Context抽象类的对象。

于 2012-11-14T22:31:44.857 回答
0

我知道这是一个老问题,但它可能会帮助更多的人。您可以做的是调用 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))

和我之前说的一样的解释。

于 2022-02-11T12:55:44.633 回答
0

这会将任何 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);

希望这可以帮助。

于 2017-04-25T21:37:52.240 回答