0

我有一个扩展 ListActivity 的主要活动,然后在该活动内部是一个名为 loadcomments 的 Asynctask。此 Asynctask 使用 json 收集评论并将它们返回到数组中,在 doInBackground 函数中,然后 onPostExecute 将数组放入 String[] 中,然后将它们放入 listView 中。这是我的代码,

    public class DashboardActivity extends ListActivity {

    class loadComments extends AsyncTask<JSONObject, String, JSONObject> {


            @Override
            protected void onPreExecute() {
                super.onPreExecute();


            } 

            @Override
            protected void onProgressUpdate(String... values) {
                super.onProgressUpdate(values);

            } 

            protected JSONObject doInBackground(JSONObject... params) {


                JSONObject json2 = CollectComments.collectComments(usernameforcomments, offsetNumber);


                    return json2;



            }

            @Override
            protected void onPostExecute(JSONObject json2) {
                try {  
                    if (json2.getString(KEY_SUCCESS) != null) { 
                        registerErrorMsg.setText("");
                        String res2 = json2.getString(KEY_SUCCESS);
                        if(Integer.parseInt(res2) == 1){ 


                            JSONArray array = json2.getJSONArray(KEY_COMMENT);
                            String comments[] = new String[array.length()];
                            for ( int i=0; i<=array.length(); i++ ) {
                                comments[i] = array.getString(i);
                            }
                            setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.label, comments));







                            }//end if key is == 1
                        else{
                            // Error in registration
                            registerErrorMsg.setText(json2.getString(KEY_ERROR_MSG));
                        }//end else
                    }//end if
                } //end try

                catch (JSONException e) { 
                    e.printStackTrace();
                }//end catch    
            }
        }


        new loadComments().execute();

我试过这段代码但它不起作用,这是我的日志猫,

    07-08 21:10:51.468: D/AndroidRuntime(26516): Shutting down VM
07-08 21:10:51.468: W/dalvikvm(26516): threadid=1: thread exiting with uncaught exception (group=0x40ac9228)
07-08 21:10:51.478: E/AndroidRuntime(26516): FATAL EXCEPTION: main
07-08 21:10:51.478: E/AndroidRuntime(26516): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.DashboardActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.os.Looper.loop(Looper.java:154)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread.main(ActivityThread.java:4945)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at java.lang.reflect.Method.invokeNative(Native Method)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at java.lang.reflect.Method.invoke(Method.java:511)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at dalvik.system.NativeStart.main(Native Method)
07-08 21:10:51.478: E/AndroidRuntime(26516): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ListActivity.onContentChanged(ListActivity.java:250)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.Activity.setContentView(Activity.java:1885)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at com.example.DashboardActivity.onCreate(DashboardActivity.java:101)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.Activity.performCreate(Activity.java:4531)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
07-08 21:10:51.478: E/AndroidRuntime(26516):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
07-08 21:10:51.478: E/AndroidRuntime(26516):    ... 11 more
07-08 21:10:52.750: D/Process(26516): killProcess, pid=26516
07-08 21:10:52.750: D/Process(26516): dalvik.system.VMStack.getThreadStackTrace(Native Method)
07-08 21:10:52.750: D/Process(26516): java.lang.Thread.getStackTrace(Thread.java:599)
07-08 21:10:52.750: D/Process(26516): android.os.Process.killProcess(Process.java:788)
07-08 21:10:52.750: D/Process(26516): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:104)
07-08 21:10:52.750: D/Process(26516): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
07-08 21:10:52.750: D/Process(26516): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
07-08 21:10:52.750: D/Process(26516): dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

0

您的错误已经指定了错误的来源:

Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

要使用 ListActivity,您加载的布局必须具有此视图:

<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
于 2013-07-09T01:19:37.640 回答