public class EmergencyNumbersGenerator {
private static ArrayList<EmergencyNumberFeatures> features;
public static ArrayList<EmergencyNumberFeatures> generateEmergencyNumber()
{
features = new ArrayList<>();
EmergencyNumberFeatures em = new EmergencyNumberFeatures(
Resources.getSystem().getString(R.string.policeControl),
Resources.getSystem().getString(R.string.policeControlNumber)
);
}
}
这恰好是我的代码,此类EmergencyNumberGenerator没有任何上下文。因此,我在SO中寻找从strings.xml获取字符串的解决方案,发现我可以使用
Resources.getSystem().getString(R.string.{stringID})
但是,在显示“找不到资源”时出现错误。
android.content.res.Resources$NotFoundException: String resource ID #0x7f0d0085
at android.content.res.Resources.getText(Resources.java:348)
at android.content.res.Resources.getString(Resources.java:441)
at com.utilnepal.MobileHelp.data.EmergencyNumbersGenerator.generateEmergencyNumber(EmergencyNumbersGenerator.java:20)
at com.utilnepal.MobileHelp.ActivitiesFragment.EmergencyFragment.onCreateView(EmergencyFragment.java:43)
有关此问题的任何帮助吗?
答案 0 :(得分:2)
请阅读official doc
Resources.getSystem().getString()
将为您提供系统范围的字符串,而不是您的应用程序(strings.xml)中的字符串
您可以引用this question来获取应用程序上下文并按如下方式使用它:
yourContext.getResources().getString(R.string.policeControl);
答案 1 :(得分:1)
因此,Resources.getSystem()
可以在您的代码中的任何地方使用。
但是,您只能获得系统资源。您在strings.xml中定义的字符串不是系统资源。
答案 2 :(得分:1)
您需要在静态方法中传递上下文。仅使用上下文或活动,您就可以从字符串文件中获取字符串。
public static ArrayList<EmergencyNumberFeatures> generateEmergencyNumber(Context mContext)
{
features = new ArrayList<>();
EmergencyNumberFeatures em = new EmergencyNumberFeatures(
mContext.getString(R.string.policeControl),
mContext.getString(R.string.policeControlNumber)
);
}