我和我一样看过同样的情况,但可以克服它:( 我得到了这个"你的内容必须有一个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>
答案 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>