我的切换活动项目有问题。 mt项目包含3个具有3种不同布局的活动,因此一个活动用于一个布局。 但是,项目无法运行,模拟器显示“应用程序myProject意外停止”
这是我的代码:
public class myProject extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Button loginButton = (Button) findViewById(R.id.login);
loginButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), login.class);
startActivityForResult(myIntent, 0);
}
});
Button joinButton = (Button) findViewById(R.id.join);
joinButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), register.class);
startActivityForResult(myIntent, 0);
}
});
Button exitButton = (Button) findViewById(R.id.exit);
exitButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
System.exit(0);
}
});
}
这里是te AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="myProject.app"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".login"></activity>
<activity android:name=".main"></activity>
<activity android:name=".register"></activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
请帮助我找出问题所在。谢谢。
更新AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="myProject.app"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".myProject"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".choosepet"></activity>
<activity android:name=".login"></activity>
<activity android:name=".petMain"></activity>
<activity android:name=".register"></activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
我已更新,但仍然无法在模拟器中运行。
更新2
我尝试删除所有侦听器,看起来像这样:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myProject_layout);
}
项目运行顺利。我认为错误是在按钮监听器中。有人可以帮忙解决它吗?
logcat中的错误:
10-24 11:41:08.006: ERROR/AndroidRuntime(644): FATAL EXCEPTION: main
10-24 11:41:08.006: ERROR/AndroidRuntime(644): java.lang.RuntimeException: Unable to start activity ComponentInfo{tamagochi.app/tamagochi.app.tamagochi}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.os.Handler.dispatchMessage(Handler.java:99)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.os.Looper.loop(Looper.java:123)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread.main(ActivityThread.java:3647)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at java.lang.reflect.Method.invokeNative(Native Method)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at java.lang.reflect.Method.invoke(Method.java:507)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at dalvik.system.NativeStart.main(Native Method)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.Activity.setContentView(Activity.java:1657)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at tamagochi.app.tamagochi.onCreate(tamagochi.java:18)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
10-24 11:41:08.006: ERROR/AndroidRuntime(644): ... 11 more
答案 0 :(得分:1)
您的Activity类名为myProject,而主要活动的名称为“.main”。您还会在清单中两次列出“.main”。
删除对“.main”的第二个引用,并确保清单中的活动名称与活动的类名相匹配。
像这样:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".myProject"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".login"></activity>
<activity android:name=".register"></activity>
</application>
答案 1 :(得分:1)
由于你没有发布你的布局xml文件,我想问一下,你确定,你需要使用ListActivity吗?请查看相同here的基本概念,并在项目中尝试使用Acitivity代替ListActivity。您的logcat在第一行显示与此相关的内容。
答案 2 :(得分:1)
问题在于我的xml文件。
您正在使用ListView,其ID是由您提供的自定义(android:id="@+id/myListView" - something like this)
错误。如果要将自己的id提供给ListView,则必须通过Activity而不是ListActivity扩展类,并找到ListView的id并对其执行操作。
在你的情况下,当你通过ListActivity扩展类时,你应该将ListView的id用作android:id="@android:id/list"
。
如果您按活动扩展课程 - android:id="@+id/myListView"
。
否则,如果您使用ListActivity - android:id="@android:id/list"
答案 3 :(得分:0)
确保在程序的xml清单中声明了活动。如果他们不是你的程序将永远崩溃