与
达成协议 CharSequence contentTitle = R.string.value;
错误无法从int转换为CharSequence。有没有办法绕过这个或我错过了什么? 我试过了
String s = R.string.value + "";
CharSequence contentTitle = s;
它返回整数值。 有什么帮助吗?
答案 0 :(得分:55)
R.string.value
是对R类中静态字段的调用,它是由Eclipse自动生成的,它对所有资源进行了总结。要检索字符串,您需要使用:
CharSequence contentTitle = getString(R.string.value);
如果您打开R类,您将看到它只包含引用项目编译资源的数字。
答案 1 :(得分:7)
要检索字符串,您需要使用getString(),
但getString()是Context类的方法。 如果要在Activity类之外使用此方法,则应首先链接到上下文,然后调用:
String s = mContext.getString(R.string.somestring)
答案 2 :(得分:1)
R.string.value返回资源“value”的引用ID号。如果你看看你的R类,它会显示如下:
public static final class string {
public static final int value=0x7f040007;
}
我一直遇到引用getString()方法的问题。 Eclipse向我吐出的确切错误是:
对于类型DatabaseHelper.MainDatabaseHelper
,未定义getString(int)方法
阅读一段时间后,我发现你必须引用你的应用程序的上下文才能访问getString()方法。我试图在内容提供程序中创建一个私有SQLDatabase帮助程序类,但是,这不允许我引用getString()方法。到目前为止我的解决方案是做这样的事情:
private class MainDatabaseHelper extends SQLiteOpenHelper {
MainDatabaseHelper(Context context) {
super(context, context.getString(R.string.createRoutesTable), null, 1);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL((getContext()).getString(R.string.createRoutesTable));
}
}
请注意这两个上下文引用:
<强>上下文强> .getString()
(适用的getContext())强> .getString()
我不知道这是否是最佳的长期解决方案,但它似乎暂时有用。希望这会有所帮助。
答案 3 :(得分:0)
您也可以使用String s = getResources().getString(R.string.value);
。