2011-10-11 2 views
0

в программировании для android, мое использование setOnItemClickListener теперь бросает исключение. Раньше у меня никогда не было никаких проблем, и я не видел никаких исключений, перечисленных в документации. Может ли кто-нибудь сказать мне, в чем проблема?setOnItemClickListener выбрасывает исключение

package com.name.magicwindow; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MagicWindowActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ListView mainMenu; 
     try{ 
      mainMenu = (ListView)findViewById(R.id.main_menu_list); 

      try{ 
       mainMenu.setOnItemClickListener(new OnItemClickListener() 
       { 
        public void onItemClick(AdapterView<?> parent,View view,int position,long id) 
        { 
         // When clicked, show a toast with the TextView text 
         Toast.makeText(getApplicationContext(), ((TextView) view).getText(),Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      }catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), "could not set listener",Toast.LENGTH_LONG).show(); 
      } 
     }catch(Exception e) 
     { 
      Toast.makeText(getApplicationContext(), "could not find listview",Toast.LENGTH_LONG).show(); 
     } 


     setContentView(R.layout.main); 
    } 
} 
+0

Можете ли вы опубликовать stacktrace из logcat? –

+0

Вместо того, чтобы просто тосты, вставьте фактический вывод журнала, чтобы вы могли видеть, что происходит не так. Например: Log.e («MyActivity/outerTry.», E.getMessage(), e); –

ответ

2

Это один должен быть довольно просто:

Вы должны позвонить setContentView(R.layout.main), прежде чем использовать findViewById().
Значит, ваша деятельность знает, что это такое (иерархия представлений).

+0

Спасибо! Кажется противоречащим интуиции, чтобы отображать пользовательский интерфейс, прежде чем подключать его к бэкэнду, но это сделало трюк! : D – user980058

+0

Речь идет не о его отображении. Вы объявляете, какую иерархию представлений вы собираетесь использовать. Как «findViewById» знает, где искать данный идентификатор ... – Knickedi

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