わかりました、ここに私が持っているものがあります:
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」に変更されます。私はオブジェクト指向プログラマーのように考えようとしていますが、うまくいきません... 私はアンドロイドにかなり慣れていないので、これがばかげた質問である場合は簡単に答えてください。