2011-08-28 137 views
1

我正在試圖製作一個圖形用戶界面,其中我在頂部顯示2個按鈕,後面跟隨隨數據收到而增加的列表。以前,我在TextView中追加數據,但後來我切換到ListView,但那是崩潰我的應用程序。Android ListView崩潰了應用程序

這裏是我的代碼:

package com.test; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
public class MainActivity extends ListActivity implements OnClickListener 
{ 
    String[] packets; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button start =(Button)findViewById(R.id.start); 
     start.setOnClickListener(this); 
     Button stop =(Button)findViewById(R.id.stop); 
     stop.setOnClickListener(this); 
     setListAdapter(new ArrayAdapter<String>(this,R.layout.list_item,packets)); 

    } 
    public void onClick(View arg0) { 
    switch(arg0.getId()){ 
    case R.id.start: 
         ((ArrayAdapter)getListAdapter()).add("hello"); 
      break; 
     } 
    } 
} 

我的main.xml是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <Button android:id="@+id/start" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Start" 
    /> 
    <Button android:id="@+id/stop" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Stop" 
    /> 
    <ListView android:id="@+id/list" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    /> 
</LinearLayout> 

我list_item.xml是:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:textSize="16sp" > 
</TextView> 

這裏是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.test" 
     android:versionCode="1" 
     android:versionName="1.0"> 


    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".MainActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_SUPERUSER" /> 
</manifest> 

這裏是我的堆棧跟蹤:

Thread [<1> main] (Suspended (exception RuntimeException)) 
    ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1630  
    ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1646 
    ActivityThread.access$1500(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 121 
    ActivityThread$H.handleMessage(Message) line: 936 
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 3652  
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
    Method.invoke(Object, Object...) line: 507 
    ZygoteInit$MethodAndArgsCaller.run() line: 862 
    ZygoteInit.main(String[]) line: 620 
    NativeStart.main(String[]) line: not available [native method] 

我想在單擊開始打招呼時,被添加到列表中。

我不知道我做錯了什麼,請幫助。

+2

您可以發佈此問題的堆棧跟蹤和/或logcat的。 – hooked82

+0

我已經發布了,請檢查。 – d34th4ck3r

回答

0

您的變量packets從不初始化,因此很可能是您的異常原因。您至少應該將它聲明爲一個空的數組,並具有對您的應用程序有意義的初始容量。例如:

String[] packets = new String[10]; 

此外,您需要更改ListView控件的ID在你的佈局:

@android:id/list 
+0

這沒有幫助的問題,應用程序仍然崩潰。 – d34th4ck3r

+0

我更新了我的答案,並在代碼中看到了另一個問題。試試看。如果不起作用,請添加除堆棧跟蹤外的異常消息。另外,請更詳細地描述應用程序崩潰的時間。例如。當你點擊一個按鈕或者甚至在活動顯示之前它會發生嗎? – elevine

+0

它仍然無法正常工作,它在應用程序啓動時崩潰。 logcat中沒有顯示錯誤/異常,但eclipse提供了上面的堆棧跟蹤。我已經添加了list_item.xml。 – d34th4ck3r