繁体   English   中英

Android ListActivity突然坏了,即使在那里,也找不到android.R.id.list

[英]Android ListActivity suddenly broke, can't find android.R.id.list even though its there

我意识到许多问题浮在水上,但我从未发现任何人遇到我的确切问题。

据我所知,我做对了,它昨天起作用了。 今天,我正在研究应用程序的其他部分,并想对其进行测试。 现在,我收到了这个令人讨厌的错误,它找不到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个

很多人会因R文件无法正确生成等错误而产生错误,通常我尝试像别人建议的那样执行Clean操作。 如果这样不起作用,请遍历所有xml文件并对其进行精梳,从而导致丢失<或>的任何小错误,可能会导致R文件损坏。 如果失败,请删除正在运行的项目,但将文件保留在磁盘上,然后从现有代码创建一个新项目(假设您使用的是eclipse)并找到项目文件夹的路径。 确保您选中复制到工作区,这通常可以解决我的问题。

您发布的代码似乎没有任何问题。 工作正常。 但是,我可以通过更改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

尝试

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

像这样校准列表视图

ListView mlist = (ListView)findViewById(R.id.list);

然后清理您的项目并检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM