从没有活动的类中访问资源字符串

时间:2016-02-18 12:22:39

标签: android

我在strings.xml中定义了所有文本名称/标签。

我发现R.string.返回字符串的ID引用号。如何让它返回实际的字符串?

public class ResultsFileFormat{        

    public void getAllMeasData(){

        System.out.println(" *** STRING ****" + (R.string.date));

        // File text format
        System.out.println(
        R.string.file_name + fileName + "\n" +
        R.string.date + date + "\n\n" +
        R.string.cal_table_sn + calTableSn + "\n" +
        R.string.cal_table_date + calDate + "\n" +
        R.string.cal_temp + calTemp + " C" + "\n" +
        R.string.ref_gauge + tableGaugeRef + "\n\n" +
        R.string.gauge_val_min + gauge.minGauge + "     " + tableGaugeMin + " (C)" + "\n" +
        R.string.gauge_val_max + gauge.maxGauge + "     " + tableGaugeMax + " (C)" + "\n" +
        R.string.groove_val_min + groove.minGroove + "     " + tableGrooveMin + " (C)" + "\n" +
        R.string.groove_val_max + groove.maxGroove + "     " + tableGrooveMax + " (C)" + "\n" +
        R.string.xl_min_pos + crossLevelPos.xlPosLow + "     " + xlLow + " (C)" + "\n" +
        R.string.xl_max_pos + crossLevelPos.xlPosHigh + "     " + xlHigh + " (C)" + "\n" +
        R.string.xl_min_neg + crossLevelNeg.xlNegLow + "     " + xlLow + " (C)" + "\n" +
        R.string.xl_max_neg + crossLevelNeg.xlNegHigh + "     " + xlHigh + " (C)" + "\n" );

    }        
}

4 个答案:

答案 0 :(得分:0)

  

您可以使用属于Context Class的getResource方法

String filename = getResources()。getString(R.string.file_name);

的System.out.println(文件名);

答案 1 :(得分:0)

R.string.file_name将为您提供R.java文件中该项的id引用。如果你想获得实际的字符串,你需要像这样调用context.getResources().getString(R.string.file_name);。由于您是从不是extends Activity的类调用,因此您必须传递上下文或获取应用程序上下文。使用构造函数传递上下文。所以最终的代码看起来像。

private Context context = null;
public ResultsFileFormat(Context context){
    this.context = context;
}

并获取资源

String fileName = context.getResources().getString(R.string.file_name);

我没有运行此代码,请尝试让我知道。

答案 2 :(得分:0)

您需要使用Context的实例,您可以使用getResources().getString(R.string.<name>)

使用

Context context=getApplicationContext();
context.getResources().getString(R.string.<name>)

或者将Context实例或Activity实例(getActivity()this)传递给java类构造函数,并使用它来调用getResources()方法。

答案 3 :(得分:-1)

您可以将Application Context用于此目的。 您应该扩展Application类,如下所示

公共类ApplicationEx扩展了Application {

public static ApplicationEx appContext;
@Override
public void onCreate() {
    super.onCreate();
    appContext = this;

}

}

在清单文件的Application标记中注册Application类,如下所示

然后在您想要上下文的文件中,您可以像

一样访问它

ApplicationEx.appContext.getString(R.string。)