2013-05-09 160 views
0

只要按钮打开About类,应用程序就会关闭。我完全按照一个视频教程,所以它不应该有任何错误。ListActivity强制关闭

所以我基本上想要一个列表中有三个项目。然后当你点击它们时,它会带你到具体的活动。那么有什么缺失?我知道我没有设置任何onClickListeners,但我只想让这个列表在继续之前正常工作。

这里的java文件:

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:

<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:

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 

任何想法?

回答

1

如果您使用列表的活动,你需要有

android:id="@android:id/list" 

的项目,以便从

android:id="@+id/aboutList" 

更改名单的ID到布局XML

1

你的活性衍生自从ListActivity,这需要您的布局包含一个名为list的ID,所以你必须这样定义它:

<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的实现为列表提供了一些便利方法。

干杯