Android Listview质疑'android.R.id.list'

时间:2015-04-19 21:01:07

标签: java android listview

我和我一样看过同样的情况,但可以克服它:( 我得到了这个"你的内容必须有一个ListView,其id属性是' android.R.id.list'"当我编译程序时

这是logcat和代码

logcat的:

04-20 03:42:53.787: E/AndroidRuntime(2547): FATAL EXCEPTION: main
04-20 03:42:53.787: E/AndroidRuntime(2547): java.lang.RuntimeException:   Unable to start activity ComponentInfo{com.androidbegin.menuviewpagertutorial/com.android.GoTrip.ListFindResult}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.os.Looper.loop(Looper.java:137)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread.main(ActivityThread.java:5103)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at java.lang.reflect.Method.invokeNative(Native Method)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at java.lang.reflect.Method.invoke(Method.java:525)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at dalvik.system.NativeStart.main(Native Method)
04-20 03:42:53.787: E/AndroidRuntime(2547): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ListActivity.onContentChanged(ListActivity.java:243)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.Activity.setContentView(Activity.java:1895)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at com.android.GoTrip.ListFindResult.onCreate(ListFindResult.java:59)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.Activity.performCreate(Activity.java:5133)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-20 03:42:53.787: E/AndroidRuntime(2547):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
04-20 03:42:53.787: E/AndroidRuntime(2547):     ... 11 more
04-20 03:42:55.839: I/Process(2547): Sending signal. PID: 2547 SIG: 9

ListFindResult.java

   @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        setContentView(R.layout.listfind);
        Intent myIntent = getIntent(); 

    searchkey = myIntent.getStringExtra("name");
    findList = new ArrayList<HashMap<String, String>>();

    new Finding().execute();

    ListView lv = getListView();

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String iid = ((TextView) view.findViewById(R.id.kode)).getText()
                    .toString();

        }
    });

     }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(ListFindResult.this);
        pDialog.setMessage("Loading locations...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    protected String doInBackground(String... args) {
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("name", searchkey));
        JSONObject json = jParser.makeHttpRequest(url_search, "GET", params);

        Log.d("Search trips: ", json.toString());

        try {
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {

                ListLokasi = json.getJSONArray(TAG_ID);


                for (int i = 0; i < ListLokasi.length(); i++) {
                    JSONObject c = ListLokasi.getJSONObject(i);

                    String textview1 = c.getString(TAG_ID);

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

                    map.put(TAG_ID, textview1);
                    findList.add(map);
                }
            } else {
                }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    protected void onPostExecute(String file_url) {
        pDialog.dismiss();
        runOnUiThread(new Runnable() {
            public void run() {
                ListAdapter adapter = new SimpleAdapter(
                        ListFindResult.this, findList,
                        R.layout.daftarlokasi, new String[] { TAG_ID},
                        new int[] { R.id.textview1});
                setListAdapter(adapter);
            }
        });

listfind.xml

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"
   android:layout_height="match_parent" >

   <ListView android:id="@+id/listview" 
       android:layout_width="match_parent"
       android:layout_height="match_parent">

   </ListView>

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

由于您使用的是ListActivity,因此您必须在xml文件中使用标识@android:id/list而非自定义ID。

要解决此问题,请从以下位置更改listfind.xml:

<ListView android:id="@+id/listview" 
       android:layout_width="match_parent"
       android:layout_height="match_parent">
</ListView>

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