2011-01-25 72 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