0

私はこのようなことをしようとしています

public class CytatCore {

    public static void cytatCore(int number, TextView tv) {

       tv.setText(R.string.text+number);
    }
}

「text1」、「text2」などの名前の xml に多くの文字列があります。最後の値のみが変更されています。これをいくつかの方法で実行しようとしましたが、それでもコードでエラーが発生します。

4

4 に答える 4

3

私は次のコードがあなたのために働くと思います

switch(number) {
    case 1 : tv.setText(R.string.text1);
    case 2 : tv.setText(R.string.text2);
}

この型コードを使用している間は、R.string に text1、text2 も入れてください。switch ケースもより高速に処理されます。

于 2012-04-05T18:23:38.190 に答える
2

あなたの質問が明確に書かれていないため、あなたが達成しようとしていることについて少し混乱していますが、暗闇の中で突き刺して、あなたの質問が

XML の文字列の末尾に数値を追加するにはどうすればよいですか?

編集:私の仮定は間違っていました。あなたの質問はむしろ

名前参照によって XML から文字列を取得するにはどうすればよいですか?

getIdentifier()a のメソッドを使用するContextと、名前で ID が検索されます...ただし、この操作は非常に頻繁に使用する場合は低速であるため、お勧めできません。

public class CytatCore {

    public static void cytatCore(Context context, int number, TextView tv) {

       int textId = context.getResources().getIdentifier("text" + number, "string", context.getPackageName());
       tv.setText(textId);
    }
}
于 2012-04-05T18:25:48.713 に答える
1

あなたが持っている別のオプションは、Resourcesオブジェクトへの参照を取得し、メソッドを使用することgetIdentifier()です。アクティビティに参加している場合は、次のことができます。

public void cytatCore(int number, TextView tv) {    
    int id = getResources().getIdentifier("text" + 1, "string", this.getPackageName());
    t.setText(id);
}
于 2012-04-05T18:42:01.977 に答える
0

名前を配列に入れてみてください。

...
private String[] ids = new String[N];
for (int i = 0; i < N; i++) {
    ids[i] = context.getString(R.string.resource_name) + i;
}

その後:

...
public static void cytatCore(int i, TextView tv) {
    tv.setText(ids[i]);
}

または単に:

    ...
public static void cytatCore(int i, TextView tv) {
    tv.setText(context.getString(R.string.resource_name) + i);
}
于 2012-04-05T18:22:54.597 に答える