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 が吐き出す正確なエラーは次のとおりです。

メソッド getString(int) は、タイプ DatabaseHelper.MainDatabaseHelper に対して未定義です

しばらく読んだ後、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));
    }
}

次の 2 つのコンテキスト参照に注意してください。

コンテキスト.getString()

(getContext()) .getString()

これが最適な長期的な解決策であるかどうかはわかりませんが、現時点ではうまくいくようです. お役に立てれば。

于 2012-04-04T02:38:53.383 に答える