2012-12-13 159 views
0

在創建多個colomn listview時出現跟隨錯誤 在此之前獲得main.xml中解決的空指針異常 之後發生此錯誤。無法啓動活動ComponentInfo

Error 
    12-13 19:04:00.524: E/AndroidRuntime(1588): FATAL EXCEPTION: main 
     12-13 19:04:00.524: E/AndroidRuntime(1588): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mysampleapp/com.example.mysampleapp.LabelUser}: java.lang.NullPointerException 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.os.Handler.dispatchMessage(Handler.java:99) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.os.Looper.loop(Looper.java:123) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at java.lang.reflect.Method.invokeNative(Native Method) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at java.lang.reflect.Method.invoke(Method.java:521) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at dalvik.system.NativeStart.main(Native Method) 
     12-13 19:04:00.524: E/AndroidRuntime(1588): Caused by: java.lang.NullPointerException 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at com.example.mysampleapp.LabelUser.onCreate(LabelUser.java:70) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
     12-13 19:04:00.524: E/AndroidRuntime(1588):  ... 11 more 

我寫的代碼爲twocolomn listview。

import java.util.ArrayList; import java.util.HashMap;

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class LabelUser extends ListActivity { 
    String[] labelArray; 
    String[] labelIdArray; 
    String[] labelRateArray; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.labeluser); 
     ControlDashboard obj = new ControlDashboard(); 
     String url = "http://192.168.1.73:3000/labels/show_label_android/?user="+Constants.ID; 
     JSONObject jobj = obj.getJSONFromUrl(url); 

     try { 
      JSONObject array = jobj.getJSONObject("list"); 
      JSONArray menuitemArr = array.getJSONArray("array"); 
      labelArray = new String[menuitemArr.length()]; 
      labelIdArray = new String[menuitemArr.length()]; 
      labelRateArray = new String[menuitemArr.length()]; 
      System.out.println(menuitemArr.length()); 
      for (int i = 0; i < menuitemArr.length(); i++) { 
       // printing the values to the logcat 
       labelRateArray[i] = menuitemArr.getJSONObject(i).getString("current_royalty_rate").toString(); 
       labelIdArray[i] = menuitemArr.getJSONObject(i).getString("id").toString(); 
       labelArray[i] = menuitemArr.getJSONObject(i).getString("name").toString();  
       System.out.println(labelArray[i]); 
      } 
      System.out.println(); 
      ListView list = (ListView) findViewById(R.id.listView1); 
      ArrayList<HashMap<String, String>> mylistData = new ArrayList<HashMap<String, String>>(); 

      String[] columnTags = new String[] {"col1", "col2"}; 
      int[] columnIds = new int[] {R.id.column1, R.id.column2}; 
      for(int i=0; i<2; i++) 
      { 
      HashMap<String,String> map = new HashMap<String, String>(); 
      //initialize row data 
      for(int j=0; j<3; j++) 
      { 

       map.put(columnTags[i], labelArray[j]); 
       map.put(columnTags[i], labelRateArray[j]); 

      } 
      mylistData.add(map); 
      } 
      SimpleAdapter arrayAdapter = new SimpleAdapter(this, mylistData, R.layout.two_col_row,columnTags , columnIds); 
list.setAdapter(arrayAdapter); 


     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 



    } 
    //@Override 
    // protected void onListItemClick(ListView l, View v, int position, long id) { 
    // String item = (String) getListAdapter().getItem(position); 
    // Constants.LABELID = labelIdArray[(int) id]; 
    // startActivity(new Intent("com.example.mysampleapp.DASHBOARDTAB")); 


    // } 


} 

回答

2

要調用findViewbyId沒有的setContentView

ListView list = (ListView) findViewById(R.id.listView1); 

,所以我想列表爲空。 所以

list.setAdapter(arrayAdapter); 

給出NullPointerException異常

您應該取消註釋的setContentView並確保你的XML有一個名爲ListView1的ListView控件

+0

我跟着烏爾步驟,但現在越來越 –

+0

現在m如果此錯誤10月12日至14日: 10:27.995:E/AndroidRuntime(278):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.mysampleapp/com.example.mysampleapp.LabelUser}:java.lang.RuntimeException:您的內容必須有一個ListView如果你使用listActivity,那麼它的id屬性是'android.R.id.list' –

+0

你的listView的名字應該是android:id =「@ android:id/list」,所以把listView1重命名爲@android:id/list – nandeesh

相關問題