web-dev-qa-db-ja.com

R.string.valueヘルプAndroid通知

どうしたの

 CharSequence contentTitle = R.string.value;

エラーはintからCharSequenceに変換できません。これを回避する方法はありますか、それとも何かが足りませんか?私は試した

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

整数値を返します。何か助けはありますか?

22
Simon

R.string.valueは、クラスRの静的フィールドへの呼び出しです。これは、Eclipseによって自動生成され、すべてのリソースの一種の要約を実行します。文字列を取得するには、次を使用する必要があります。

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

Rクラスを開くと、プロジェクトのコンパイル済みリソースへの参照である番号のみが含まれていることがわかります。

55
Sephy

文字列を取得するには、getString()を使用する必要があります。

ただし、getString()はContextクラスのメソッドです。 Activityクラスの外部でこのメソッドを使用する場合は、最初にコンテキストへのリンクを取得してから、次を呼び出す必要があります。

String s = mContext.getString(R.string.somestring)
7
sizreaper

R.string.valueは、リソース '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()

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

1
TwoByteHero

String s = getResources().getString(R.string.value);も使用できます。

0
viki