1

わかりました、ここに私が持っているものがあります:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    title = (TextView) findViewById(R.id.title);
    description = (TextView) findViewById(R.id.description);
    Spinner dropdown = (Spinner) findViewById(R.id.mainMenu);
    final String options[] = {"-Turf Diseases-", "Dollar Spot", "Red Thread"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,options); 
    dropdown.setAdapter(adapter);

    dropdown.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            newSelection(options[position]);                
        }
        public void onNothingSelected(AdapterView<?> arg0) {} 
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void newSelection(String selection) {
    if(!selection.contains("-")) {
        title.setText(selection);
        selection=selection.replace(" ", "_");
        selection=selection.toUpperCase();
        description.setText("@string/DESC_"+selection);
    }
}

options[] の文字列配列は、芝生の病気 (アプリの目的) の菌株のタイトルを保持します。これはメイン アクティビティのスピナー リストにあり、ユーザーがタイトルをクリックすると、アクション リスナーがこの最後のメソッド newSelection を呼び出します。このメソッドは、タイトルを WORD_WORD にフォーマットすることになっています。

説明は、すべて DESC_WORD_WORD で始まる事前定義された文字列として strings.xml に保存されています。だから私の論理では、これを行うことができます: description.setText("@string/DESC_"+selection); また、strings.xml 内の対応する説明を簡単に見つけることができます。

実際、これは実際には起こっていません。テキストは、定義済みの文字列ではなく「@string/DESC_WORD_WORD」に変更されます。私はオブジェクト指向プログラマーのように考えようとしていますが、うまくいきません... 私はアンドロイドにかなり慣れていないので、これがばかげた質問である場合は簡単に答えてください。

4

1 に答える 1