22

有什么关系

 CharSequence contentTitle = R.string.value;

错误无法从 int 转换为 CharSequence。有没有办法解决这个问题或者我错过了什么?我试过

String s = R.string.value + "";
CharSequence contentTitle = s;

它返回整数值。有什么帮助吗?

4

4 回答 4

55

R.string.value是对 R 类中的静态字段的调用,它是由 Eclipse 自动生成的,它对您的所有资源进行了一种总结。要检索字符串,您需要使用:

CharSequence contentTitle = getString(R.string.value);

如果您打开 R 类,您将看到它仅包含引用您项目的已编译资源的数字。

于 2010-07-29T14:02:03.860 回答
7

要检索字符串,您需要使用 getString(),

但 getString() 是来自 Context 类的方法。如果你想在你的 Activity 类之外使用这个方法,你应该首先链接到你的上下文,然后调用:

String s = mContext.getString(R.string.somestring)
于 2011-12-28T12:18:00.280 回答
1

R.string.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()

我不知道这是否是最佳的长期解决方案,但目前似乎可行。希望这可以帮助。

于 2012-04-04T02:38:53.383 回答
0

你也可以用String s = getResources().getString(R.string.value);

于 2013-10-30T12:12:41.843 回答