首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListActivity力关闭

ListActivity力关闭
EN

Stack Overflow用户
提问于 2013-05-09 16:28:19
回答 2查看 246关注 0票数 0

每当按钮打开About类时,应用程序就会强制关闭。我完全遵循了一个视频教程,所以它不应该是任何错误。

因此,我基本上想要一个清单,其中有三个项目。然后当你点击它们的时候,它会带你去特定的活动。有什么遗漏了吗?我知道我没有设置任何onClickListeners,但在继续之前,我只希望这个列表能够正常工作。

以下是java文件:

代码语言:javascript
复制
package com.heavyfork.sq;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;

public class About extends ListActivity {

protected String[] aboutList = {
        "More Apps",
        "About",
        "Help"

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, aboutList);
    setListAdapter(adapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.about, menu);
    return true;
}

}

以及XML:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".About" >

<ListView
    android:id="@+id/aboutList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >
</ListView>

LogCat:

代码语言:javascript
复制
05-09 18:01:27.936: E/AndroidRuntime(16943): FATAL EXCEPTION: main
05-09 18:01:27.936: E/AndroidRuntime(16943): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.heavyfork.sq/com.heavyfork.sq.About}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2312)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread.access$600(ActivityThread.java:156)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1250)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.os.Looper.loop(Looper.java:137)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread.main(ActivityThread.java:5229)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at java.lang.reflect.Method.invokeNative(Native Method)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at java.lang.reflect.Method.invoke(Method.java:525)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at dalvik.system.NativeStart.main(Native Method)
05-09 18:01:27.936: E/AndroidRuntime(16943): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ListActivity.onContentChanged(ListActivity.java:243)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:273)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.Activity.setContentView(Activity.java:1889)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at com.heavyfork.sq.About.onCreate(About.java:27)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.Activity.performCreate(Activity.java:5154)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-09 18:01:27.936: E/AndroidRuntime(16943):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
05-09 18:01:27.936: E/AndroidRuntime(16943):    ... 11 more

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-05-09 17:21:31

如果使用列表活动,则需要使用

代码语言:javascript
复制
android:id="@android:id/list"

因此,将列表的id改为

代码语言:javascript
复制
    android:id="@+id/aboutList"

到布局xml中。

票数 1
EN

Stack Overflow用户

发布于 2013-05-09 17:26:16

您的活动来自ListActivity,它要求布局包含一个名为list的id,因此您必须这样定义它:

代码语言:javascript
复制
<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >
</ListView>

如前所述,这是由于ListView的实现,它为列表提供了一些方便的方法。

干杯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16466574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档