我有一个扩展 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)