переключение деятельности приходит к ошибке - PullRequest
0 голосов
/ 24 октября 2011

У меня проблема с моим проектом по переключению активности. 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);
             }

     });
}

а вот 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 ]

1 голос
/ 24 октября 2011

Я думаю, проблема в вашем XML-файле.

Вы используете ListView, идентификатор которого является пользовательским (android:id="@+id/myListView" - something like this), указанным вами, что неверно. Если вы присваиваете свой собственный идентификатор ListView, вы должны расширить свой класс по Activity, а не по ListActivity, найти идентификатор ListView и выполнить с ним действие.

В вашем случае вы должны использовать идентификатор ListView как android:id="@android:id/list", когда расширяете класс с помощью ListActivity.

Если вы расширяете класс по Деятельности - android:id="@+id/myListView". Иначе, если вы используете ListActivity - android:id="@android:id/list"

1 голос
/ 24 октября 2011

Ваш класс 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 голос
/ 24 октября 2011

Поскольку вы не разместили свой XML-файл макета, я хочу спросить, вы уверены, что вам нужно использовать ListActivity? Пожалуйста, ознакомьтесь с основной идеей того же здесь , а также попробуйте вместо вашего ListActivity Acctivity вместо вашего проекта. Ваш logcat показывает что-то связанное с этим в первой строке.

0 голосов
/ 24 октября 2011

Убедитесь, что вы объявили действия в xml-манифесте вашей программы. Если это не так, ваша программа будет зависать когда-либо

...