2012-11-14 136 views

回答

31

只需使用Context#getString()

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

我已经尝试过这种方法,但没有成功......我有一个类:public class MyDialogFragment extends DialogFragment {

DialogFragment不是Context的子类,所以你n eed去获得有效的访问权限(比如你的Activity)。使用此:

String string = getActivity().getString(android.R.string.cancel); 

,或因您发现您可以使用onAttach()通过活动,却明白,只要你有一个有效的上下文一起工作,你可以做一个片段这里面的任何地方。

+0

我已经尝试过这种方法,但没有成功......但现在我知道我在做什么错了:我有一个类:'公共类MyDialogFragment扩展DialogFragment {'和这个类内我做:private String xbtAffirmativeLabel = getString(android.R.string.cancel);这是问题所在,我只能在类似下面的方法中做到这一点:public void onAttach(Activity activity){感谢您的支持,它帮助我实现了这一点。 – HugoXP

0

这会将任何Android资源转换为字符串。 在这个例子中,我使用了'R.color.myColor',但它可以用于任何Android资源类型。

colors.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); 

希望这有助于。