【发布时间】:2013-12-08 15:25:40
【问题描述】:
我的 onListItemClick 有问题。
这是我的 Menu.java 类:
public class Menu extends ListActivity{
String classes[] = { "MainActivity", "etcetera1", "etcetera2", "etcetera3", "etcetera4", "etcetera5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
}
@SuppressWarnings("rawtypes")
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String positie = classes[position];
try{
Class ourClass = Class.forName("com.jacob.eindproject.MAIN" + positie);
Intent ourIntent = new Intent(Menu.this, ourClass);
startActivity(ourIntent);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
这是我的 MainActivity 类(它是一个 BMI 计算器。):
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate het menu
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void calculateClickHandler(View view) {
// handeld het klikken op de button
if (view.getId() == R.id.berekenButton) {
// referenties
EditText gewichtText = (EditText)findViewById(R.id.gewichtText);
EditText lengteText = (EditText)findViewById(R.id.lengteText);
TextView resultaat = (TextView)findViewById(R.id.resultaat);
// waarden
float gewicht = Float.parseFloat(gewichtText.getText().toString());
float lengte = Float.parseFloat(lengteText.getText().toString());
// berekend de BMI
float bmiWaarde = berekenBMI(gewicht, lengte);
// zoekt de bijbehorende label (overgewicht etc.)
String bmiInterpretation = interpretBMI(bmiWaarde);
// weergeeft het resultaat
resultaat.setText(bmiWaarde + "-" + bmiInterpretation);
}
}
// de formule
private float berekenBMI (float gewicht, float lengte) {
return (float) (gewicht / (lengte * lengte));
}
// bijbehorende labels:
private String interpretBMI(float bmiWaarde) {
if (bmiWaarde < 16) {
return "Ernstig Ondergewicht";
}
else if (bmiWaarde < 18.5) {
return "Ondergewicht";
}
else if (bmiWaarde < 25) {
return "Normaal";
}
else if (bmiWaarde < 30) {
return "Overgewicht";
}
else {
return "Obees";
}
}
}
如果我启动我的模拟器,它在单击列表项时没有响应。有人出主意吗?是的,我已经检查了这个网站上的所有相关问题。
编辑:(main.xml)
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/aboutUs"
android:title="@+id/About"/>
<item
android:id="@+id/instellingen"
android:title="@+id/Instellingen"/>
【问题讨论】:
-
我认为您必须将
android:focusable="false"设置为ListView。请检查这个问题stackoverflow.com/a/9841730/2438460 -
您从 Menu 类中的哪里获取布局? Menu 类中没有 setContentView()。如果有一个XML布局文件,你是用@android:id/list作为id吗?
-
嗨@RubenWeerts。感谢你的回复。我将通过添加我的 main.xml 来编辑我的问题,这是我的 menu.xml 文件。我还在菜单类中添加了 setContentView()。它没有成功。再次感谢您的回复!雅各布
标签: java android menu onitemclicklistener