2013-12-08 3 views
0

У меня проблема с моим onListItemClick.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"; 
     } 

     } 
    } 

Если я запускаю мой эмулятор, он не отвечает при нажатии на элемент списка. У кого-то есть идея? Да, я проверил все связанные вопросы на этом веб-сайте.

EDIT: (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"/> 


+0

Я думаю, вам нужно установить 'android: focusable =" false " ' 'в' ListView'. Пожалуйста, проверьте этот вопрос http://stackoverflow.com/a/9841730/2438460 –

+0

Где вы получаете свой макет из класса меню? В классе меню нет setContentView(). И если есть файл макета XML, используете ли вы @android: id/list как id? –

+0

Привет @RubenWeerts. Спасибо за ваш ответ. Я отредактирую свой вопрос, добавив файл main.xml, который является моим файлом menu.xml. Я также добавил setContentView() в свой класс меню. Это не сработало. Еще раз спасибо за ваш ответ! Якоб – Jacobietje

ответ

0

изменение public class Menu extends ListActivity { в

public class Menu extends ListActivity implements OnItemClickListener { 

и попробовать listview.setOnItemClickListener(this);

обновление

добавить

ListView list1 = (ListView) findViewById(R.id.list); 
    list1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, classes));   
list1 = getListView(); 

к вашему onCreate

, а затем

 list1.setOnItemClickListener(
      new OnItemClickListener() 
      { 
       @Override 
       public void onItemClick(AdapterView<?> arg0, View view, 
         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(); 
    } 
} 
       } 
     ); 
+0

Я не думаю, что я действительно получил тебя. Где вы помещаете: listview.setOnItemClickListener (это); ? Спасибо за быстрый ответ! – Jacobietje

+0

игнорировать мой второй код ** setonitem ...... ** попробуйте первый PLZ и сообщите мне –

+0

, он все еще не работает. Есть ли у вас какие-то дальнейшие идеи? :) Спасибо за ваше время! – Jacobietje

0

Вы не зарегистрировали событие кликать ListView деятельности. Вот как: В вашем Menu.java написать следующее ..

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
    // this you want to do 
    String item = (String) getListAdapter().getItem(position); 
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show(); 
    } 
+0

У него уже есть один .. –

0

Это то, что finnaly работал для меня:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
//Posistion 0 is the first item (the BMI-Calculator in my project.) 
super.onListItemClick(l, v, position, id); 

switch(position) 
{ 
case 0: 
Intent openStartingPoint = new Intent(getApplicationContext(),MainActivity.class); 
startActivity(openStartingPoint); 
break; 
} 

} 

Спасибо всем, кто помог мне, и ответил на мои вопросы!

Смежные вопросы