2011-01-25 45 views
0

我嘗試,如果我碰到列表視圖 如果我不加入onClickListener一切正常 Java創建沒有運氣 一個簡單的應用程序,我只是想瓶坯一些行動:onClickListener couses崩潰與TextView的

 ListView myListView = (ListView)findViewById(R.id.listViewOptions); 
    final ArrayList<String> optionsArray = new ArrayList<String>(); 



    final ArrayAdapter<String> arrayAdapter; 


    arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,optionsArray); 

    for(int i =1 ; i < 3 ; i++) 
    { 
     optionsArray.add("1"); 
     arrayAdapter.notifyDataSetChanged(); 
    } 

    myListView.setAdapter(arrayAdapter); 
    myListView.setClickable(true); 
    myListView.setFocusable(true); 


    OnClickListener onClickListener = new OnClickListener() { 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 
}; 

myListView.setOnClickListener(onClickListener); 

XML:

<ListView android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:layout_weight="1" 
android:id="@+id/listViewOptions" 
android:clickable="true"> 
</ListView> 

感謝

日誌:

E/AndroidRuntime( 232): Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 
E/AndroidRuntime( 232): at android.widget.AdapterView.setOnClickListener(AdapterView.java:750) 
E/AndroidRuntime( 232): at com.resume.Resume.onCreate(Resume.java:52) 
E/AndroidRuntime( 232): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 
E/AndroidRuntime( 232): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
E/AndroidRuntime( 232): ... 11 more 
I/Process ( 52): Sending signal. PID: 232 SIG: 3 
I/dalvikvm( 232): threadid=7: reacting to signal 3 
E/dalvikvm( 232): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
W/ActivityManager( 52): Launch timeout has expired, giving up wake lock! 
W/ActivityManager( 52): Activity idle timeout for HistoryRecord{439114c0 com.resume/.Resume} 
+1

你能告訴我們是什麼原因導致異常?看看LogCat。 – Jems 2011-01-25 17:04:41

+1

另外,真的沒有理由多次調用notifyDataSetChanged()。首先填充你的optionsArray,然後分配ArrayAdapter。 – kcoppock 2011-01-25 17:07:00

回答

4

你需要學會看logcat的輸出......假若你這樣做你會看到以下內容:

E/AndroidRuntime(4280): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.rjh.TestProj/org.rjh.TestProj.MainActivity}: 
java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 
E/AndroidRuntime(4280):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
E/AndroidRuntime(4280):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
E/AndroidRuntime(4280):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
E/AndroidRuntime(4280):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
E/AndroidRuntime(4280):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(4280):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(4280):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
... 

,因爲它說,問題是,你正在使用OnClickListener而你應該使用OnItemClickListener