2
private int info = 1;

public void nextStep(View view)
{    
    TextView textInfo = (TextView) findViewById(R.id.textInfo);
    textInfo.setText(R.string.info1);
    info++;
}

1 つのボタンがクリックされると、メソッドnextStepが呼び出されます。そして、ボタンがクリックされるたびに、最初はinfo1文字列、次回は文字列info2など、さまざまな情報を表示したいと思いますstrings.xml。私はそのようなことをしたいと思います:

private int info = 1;

public void nextStep(View view)
{    
    TextView textInfo = (TextView) findViewById(R.id.textInfo);
    textInfo.setText(R.string.info + info);
    info++;
}

もちろん、それは不可能です。私は何をすべきか?大きな if/else や switch ステートメントを書きたくないのです。ありがとう。

4

2 に答える 2

3

もちろん、それは不可能です。

実際、そうです。これを行うために使用できますgetIdentifier

private int info = 1;
public void nextStep(View view)
{    
    TextView textInfo = (TextView) findViewById(R.id.textInfo);
    int myStrId = textInfo.getContext().getResources().getIdentifier("info"+info, "string", textInfo.getContext().getPackageName());
    textInfo.setText(myStrId);
    info++;
}

getIdentifer()R正確な名前がわからない場合に、に格納されているリソース ID を取得する方法です。世界で最も効率的な方法ではありませんが、参照Rが不可能な状況 (あなたの状況など) では十分です。

このメソッドは、同じ ID を返しますR。つまり、は単にコンパイルされたバージョンであるためgetIdentifier("info1", "id", ...);、 と同じです。このメソッドは、ID が存在するかどうか (外部ライブラリなどから) がわからないが、とにかく参照する必要がある場合にも機能します。R.id.info1R

于 2012-07-22T04:11:54.370 に答える
1

文字列の配列またはList<String>などを使用ArrayList<String>して、XML からの文字列を入力します。次に、メソッドを使用get(int index)して、リスト内の i 番目の文字列を取得できます。

JAXB を使用して XML をアンマーシャリングしている場合は、JAXB をセットアップして、大騒ぎせずにリストを作成できます。

于 2012-07-22T02:53:14.730 に答える