2013-01-19 43 views
1

我得到一个运行时异常java.lang.RuntimeException:你的内容必须有一个ListView,它的id属性是'android.R.id.list'。不知道这里有什么问题。我看了一些其他的答案,似乎将ListView id更改为列表是问题,但似乎没有工作。获取运行时崩溃日志注释你的内容必须有一个ListView的id属性是'android.R.id.list',不知道为什么?

activity_search.xml

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

    </LinearLayout> 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- Single List Item Design --> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="10dip" 
     android:textSize="16dip" 
     android:textStyle="bold" > 
</TextView> 

SearchActivity.java

package com.chance.squat; 

import com.chance.squat.R; 
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.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ImageView; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class SearchActivity extends ListActivity { 

    // url to make request 
    private static String url = "http://192.168.1.115:3000/bathrooms/nearby.json/?lat=45.580639&lon=-122.677682"; 

    // JSON Node names 
    private static final String TAG_BATHROOMS = "bathrooms"; 
    private static final String TAG_ID = "ID"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_DISTANCE = "distance"; 

    // contacts JSONArray 
    JSONArray bathrooms = null; 

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

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

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

     // getting JSON string from URL 
     JSONObject json = jParser.getJSONFromUrl(url); 

     try { 
      // Getting Array of Contacts 
      bathrooms = json.getJSONArray(TAG_BATHROOMS); 

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

       // Storing each json item in variable 
       String id = c.getString(TAG_ID); 
       String name = c.getString(TAG_NAME); 
       String distance = c.getString(TAG_DISTANCE); 
       String distanceTrimmed = distance.substring(0,4) + " " + "miles away"; 

       System.out.println(name); 

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

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

       // adding HashList to ArrayList 
       bathroomList.add(map); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 


     /** 
     * Updating parsed JSON data into ListView 
     * */ 

     ListAdapter adapter = new SimpleAdapter(this, bathroomList, 
       R.layout.list_item, 
       new String[] { TAG_NAME}, new int[] { 
         R.id.name }); 

     setListAdapter(adapter); 

     // selecting single ListView item 
     ListView lv = getListView(); 

     // Launching new screen on Selecting Single ListItem 
     lv.setOnItemClickListener(new OnItemClickListener() { 

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


       // Starting new intent 
       //Intent in = new Intent(getApplicationContext(), SeachActivity.class); 
       //in.putExtra(TAG_NAME, name); 
       //in.putExtra(TAG_DISTANCE, distance); 
       //startActivity(in); 

      } 
     }); 


    } 

} 

回答

2

变化ListView控件ID来android:id="@android:id/list"因为当你扩展ListActivity您必须的ListView id android.R.id.list

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" > 
</ListView> 
+0

这摆脱了这个问题,但我仍然得到十月1日至19日:16:52.683:E/AndroidRuntime(588):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.chance。 squat/com.chance.squat.SearchActivity}:java.lang.NullPointerException 关于那个的任何想法?它在清单中声明。 –

+0

@JohnnyRottenweed:plz用完整的日志编辑你的问题 –

+0

我没有permsission在清单文件中使用互联网。谢谢您的帮助。 –

相关问题