18

これは、このスレッドの続きのようなものです。

strings.xml の文字列をローカライズすると NullPointerException が発生する

この問題は、そのスレッドで提供されているソリューションを実行して実装した後に発生しました。提供されたソリューションは、次のようなインスタンスで機能しました。

loading = (TextView)findViewById(R.id.loading);
loading.setText(R.string.loading);

これは、以下のような状況では機能しません。

exodus.add(new Question(R.string.a, R.string.b, R.string.c, R.string.d, 0, R.string.e, -1, R.string.f));

エラーはThe constructor Question(int, int, int, int, int, int, int, int) is undefinedです。Question のコンストラクターは、次のようになっているはずですQuestion(String, String, String, String, int, String, int, String)

R.string.X

文字列ではなく整数として返されます。

この問題を解決するにはどうすればよいですか? また、ご存知の場合は、このメソッドがTextViews のテキストを設定するのに機能するのに、オブジェクトのパラメーターを設定できないのはなぜですか?

4

3 に答える 3

44

R.string.*実際の文字列を指す R.java の int への参照です。

context.getResources().getString(R.string.*);実際の文字列値を取得するために使用します。

于 2013-05-03T17:16:34.873 に答える
6

このStackOverFlowの質問を参照してください

String mystring = getResources().getString(R.string.mystring);
于 2013-05-03T17:19:23.080 に答える
4

最後の質問:

ではなく resid 引数を取るsetTextメソッドプロトタイプを使用しているStringため、機能しています。そのresidを表す をR.string.loading返します。引数を指定してメソッドをint呼び出すと、 setTextプロトタイプが使用されます。setTextgetString(R.string.loading)

于 2013-05-03T17:18:21.743 に答える