我意识到其中许多问题都浮现在那里,但我从来没有找到任何有我确切问题的人。
据我所知,我做得对,昨天也有效。今天我正在研究我的应用程序的其他部分,并想测试它。现在我得到这个令人讨厌的错误,它无法找到id为android.R.id.list的列表,但同样,它似乎就在那里。
对应用程序其他部分的任何更改是否都会导致这种情况,在这种情况下,如何? 任何人都可以看到错误,因为我肯定不能。
我非常绝望,因为这是一个学校项目,很快就会到期。 感谢大家,感谢您的时间!
(在MainActivity.java中)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
(activity_main.xml中)
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
LOGCAT
根据要求:
01-13 19:00:48.852: W/dalvikvm(25254): threadid=1: thread exiting with uncaught exception (group=0x40e6da08)
01-13 19:00:48.857: E/AndroidRuntime(25254): FATAL EXCEPTION: main
01-13 19:00:48.857: E/AndroidRuntime(25254): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.ajhansen.meetme/org.ajhansen.meetme.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.access$600(ActivityThread.java:162)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.os.Looper.loop(Looper.java:158)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.main(ActivityThread.java:5751)
01-13 19:00:48.857: E/AndroidRuntime(25254): at java.lang.reflect.Method.invokeNative(Native Method)
01-13 19:00:48.857: E/AndroidRuntime(25254): at java.lang.reflect.Method.invoke(Method.java:511)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
01-13 19:00:48.857: E/AndroidRuntime(25254): at dalvik.system.NativeStart.main(Native Method)
01-13 19:00:48.857: E/AndroidRuntime(25254): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:345)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Activity.setContentView(Activity.java:1929)
01-13 19:00:48.857: E/AndroidRuntime(25254): at org.ajhansen.meetme.MainActivity.onCreate(MainActivity.java:72)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Activity.performCreate(Activity.java:5165)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
01-13 19:00:48.857: E/AndroidRuntime(25254):
... 11更多
答案 0 :(得分:1)
很多人因R文件生成不正确等而出错。我通常尝试的其他人建议的是Clean动作。如果这不起作用,请浏览所有xml文件并对它们进行精细梳理,导致任何小错误丢失&lt;或者&gt;可能导致R文件中断。如果失败,删除工作项目但将文件保存在磁盘上,然后从现有代码创建一个新项目(假设您正在使用eclipse)并找到项目文件夹的路径。确保勾选复制到工作区,这通常可以解决我的问题。
答案 1 :(得分:0)
您发布的代码似乎没有任何问题。它工作正常。但是,我能够通过更改activity_main.xml
的内容来重现与您所获得的相同的错误,即使用@android:id/list
作为其ID的除了ListView以外的任何内容。因此,我猜想在setContentView
期间不会以某种方式提取正确的布局文件。为了检查布局文件的内容,您可以尝试用此替换onCreate
代码,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XmlPullParser xpp = getResources().getLayout(R.layout.activity_main);
int eventType;
try {
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
Log.d("DEBUG_TAG", "Start tag " + xpp.getName());
}
eventType = xpp.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.activity_main);
}
用您选择的标签替换“DEBUG_TAG”以查看LogCat中的输出。如果获取了正确的布局,那么您应该在LogCat中获得类似于以下内容的内容。
01-14 00:43:00.671:D / DEBUG_TAG(29931):开始标记ListView
答案 2 :(得分:-1)
尝试
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
加载列表视图,如
ListView mlist = (ListView)findViewById(R.id.list);
然后清理你的项目并检查。