これが私がやろうとしていることです。/values/menu.xml に保存された xml リソース ファイルから取り込まれたリストビューがあります。
次のコードが含まれています。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="menuchoices">
<item name="pv">Present Value</item>
<item name="fv">Future Value</item>
<item name="bond">Bond Pricing</item>
</string-array>
</resources>
ここまでは至ってシンプル。次に、私の Main.java ファイルは次のようになります: (ここの他のリストビューの質問から適応)
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.menuchoices)
));
}
public void onListItemClick(ListView partent, View v, int position, long id) {
if ("pv".equals(getResources().getStringArray(R.array.menuchoices)[position])){
setContentView(R.layout.presentvalue);
}
}
}
基本的に、常に新しいアクティビティを開始することはベストプラクティスではないことを読んだので、if ステートメントに contentview を変更するように指示しました。問題は、リストの最初の項目をクリックしても何も起こらないことです。「pv」を「現在価値」に置き換えてみましたが、どちらも役に立ちませんでした。
これは、このような投稿からコードを取得したためだと思います。ここではList View selection to start a new Activity ) しかし、それを変更する方法がわからないので、外部の xml リソース ファイルで動作します。
これは簡単な修正ですよね?
前もって感謝します
マックス
Ps他のすべてのものは機能します(presentvalue.xmlファイルはレイアウトフォルダーにあり、アプリを実行するとリストが適切に表示されます)
編集 //
ここに問題のある行があります
public void onListItemClick(ListView parent, View v, int position, long id) {
if (view.getText().toString().equals("Present Value")){
startActivity(new Intent(Main.this, PresentValue.class));
}
}