0

私は最初の Android アプリを作成しています。リリースされる各バージョンで変更される何百ものメニュー リンクがあります。リソース ID に基づいて onclicks を処理する方法を探しています。

メニューは XML で次のように定義されます。

<item android:id="@+id/Spring_2013" android:title="Spring 2013" android:showAsAction="ifRoom|withText" />

onclicks は、strings.xml に保存されている URL をロードします。

<string name="Summer_2013">file:///android_asset/catalog/current/genadmissionreq.html</string>

したがって、必要なのは、選択したリソース ID に基づいて必要な文字列をロードする単純な単一の onclick メソッドだけのようです。MenuItem ID は、コード内の URL 文字列 ID と常に同じです。したがって、何百もの if() または switch/case ステートメントを使用しないと、次のように言えません。

String url = getString("R.string." + menuItem.getItemId());

明らかに、その割り当てはいくつかの理由で機能しません。しかし、あなたはその考えを正しく理解していますか?では、どうすればこれを機能させることができますか?

初心者の質問で申し訳ありません。私はそれが簡単であることを知っていますが、私は何日も読んでいて、すべてのメニュー項目の if() ステートメントなしでこれを行う方法を見つけることができません. その方法では、毎週の更新が悪夢になります!

4

1 に答える 1

3

使ってみてgetIdentifier()

String title = menuItem.getTitle().toString().replace(' ', '_');
id = getResources().getIdentifier(title, "string", getPackageName());
String string = getString(id);

最初の行はそれを取得Spring 2013してに変換しSpring_2013ます。
2 行目"R.string."は、タイトルが何であれ、この場合は"R.string.Spring_2013".
3 行目は単純に String リソースをフェッチします。

于 2012-12-28T22:31:44.507 に答える