2013-11-28 131 views
-1

操縱的ListView我下面this tutorial和試圖操縱從MySQL數據庫ListView但我的應用程序崩潰和logcat的說:從MySQL數據庫

11-28 11:06:42.093: E/AndroidRuntime(874): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wintel.vasonapps/com.wintel.vasonapps.AllRBT}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 

雖然我有一個名爲list的ListView。這裏是佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

我對每一個項目一個XML文件,命名爲list_item.xml

<!-- Product id (pid) - will be HIDDEN - used to pass to other activity --> 
    <TextView 
     android:id="@+id/pid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:visibility="gone" /> 

    <!-- Name Label --> 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="6dip" 
     android:paddingLeft="6dip" 
     android:textSize="17dip" 
     android:textStyle="bold" /> 

</LinearLayout> 

誰能說爲什麼我的應用程序崩潰?如果需要進一步的代碼,請告訴我,我將用該代碼編輯此問題。提前致謝。

編輯:這是AllRBT.java,設置ID之後的錯誤來源於這裏線57

package com.wintel.vasonapps; 

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

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class AllRBT extends ListActivity { 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> productsList; 

    // url to get all products list 
    private static String url_all_products = "http://127.0.0.1/test/apps.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_PRODUCTS = "products"; 
    private static final String TAG_PID = "pid"; 
    private static final String TAG_NAME = "name"; 

    // products JSONArray 
    JSONArray products = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_all_rbt); 

     // Hashmap for ListView 
     productsList = new ArrayList<HashMap<String, String>>(); 

     // Loading products in Background Thread 
     new LoadAllProducts().execute(); //Line 57, this line throws error 

     // Get listview 
     ListView lv = getListView(); 

     // on seleting single product 
     // launching Edit Product Screen 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // getting values from selected ListItem 
       String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
         .toString(); 

       // Starting new intent 
       //Intent in = new Intent(getApplicationContext(), 
        //  EditProductActivity.class); 
       // sending pid to next activity 
       //in.putExtra(TAG_PID, pid); 

       // starting new activity and expecting some response back 
       //startActivityForResult(in, 100); 
      } 
     }); 

    } 

    // Response from Edit Product Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // if result code 100 
     if (resultCode == 100) { 
      // if result code 100 is received 
      // means user edited/deleted product 
      // reload this screen again 
      Intent intent = getIntent(); 
      finish(); 
      startActivity(intent); 
     } 

    } 

    /** 
    * Background Async Task to Load all product by making HTTP Request 
    * */ 
    class LoadAllProducts extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(AllRBT.this); 
      pDialog.setMessage("Loading ring back tones. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     /** 
     * getting All products from url 
     * */ 
     protected String doInBackground(String... args) { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      // getting JSON string from URL 
      JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); 

      // Check your log cat for JSON reponse 
      Log.d("All Products: ", json.toString()); 

      try { 
       // Checking for SUCCESS TAG 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // products found 
        // Getting Array of Products 
        products = json.getJSONArray(TAG_PRODUCTS); 

        // looping through All Products 
        for (int i = 0; i < products.length(); i++) { 
         JSONObject c = products.getJSONObject(i); 

         // Storing each json item in variable 
         String id = c.getString(TAG_PID); 
         String name = c.getString(TAG_NAME); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_PID, id); 
         map.put(TAG_NAME, name); 

         // adding HashList to ArrayList 
         productsList.add(map); 
        } 
       } else { 
        // no products found 
        // Launch Add New product Activity 
        //Intent i = new Intent(getApplicationContext(), 
         //  NewProductActivity.class); 
        // Closing all previous activities 
        //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        //startActivity(i); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all products 
      pDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
        /** 
        * Updating parsed JSON data into ListView 
        * */ 
        ListAdapter adapter = new SimpleAdapter(
          AllRBT.this, productsList, 
          R.layout.list_item, new String[] { TAG_PID, 
            TAG_NAME}, 
          new int[] { R.id.pid, R.id.name }); 
        // updating listview 
        setListAdapter(adapter); 
       } 
      }); 

     } 

    } 
} 

和錯誤是:

11-28 11:39:54.212: E/WindowManager(1596): Activity com.wintel.vasonapps.AllRBT has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40cd2c88 V.E..... R......D 0,0-480,144} that was originally added here 
11-28 11:39:54.212: E/WindowManager(1596): android.view.WindowLeaked: Activity com.wintel.vasonapps.AllRBT has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{40cd2c88 V.E..... R......D 0,0-480,144} that was originally added here 
11-28 11:39:54.212: E/WindowManager(1596): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354) 
11-28 11:39:54.212: E/WindowManager(1596): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216) 
11-28 11:39:54.212: E/WindowManager(1596): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
11-28 11:39:54.212: E/WindowManager(1596): at android.app.Dialog.show(Dialog.java:281) 
11-28 11:39:54.212: E/WindowManager(1596): at com.wintel.vasonapps.AllRBT$LoadAllProducts.onPreExecute(AllRBT.java:117) 
11-28 11:39:54.212: E/WindowManager(1596): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
11-28 11:39:54.212: E/WindowManager(1596): at android.os.AsyncTask.execute(AsyncTask.java:534) 
11-28 11:39:54.212: E/WindowManager(1596): at com.wintel.vasonapps.AllRBT.onCreate(AllRBT.java:57) 
+0

「您的內容t有一個ListView的id屬性是'android.R.id.list'「 – Sajmon

回答

0

更改您的ListView ID爲.xml文件並將您的活動擴展到ListActivity

android:id="@android:id/list" 
+0

謝謝,請參閱我的更新的問題。 –