切换活动出错

时间:2011-10-24 02:17:09

标签: android android-activity switch-statement

我的切换活动项目有问题。 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

4 个答案:

答案 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清单中声明了活动。如果他们不是你的程序将永远崩溃