Zwischen 2 Activity wechseln geht nicht

  • Antworten:13
GouJetir
  • Forum-Beiträge: 14

28.01.2012, 12:55:57 via Website

Hallo,
versuche seit gestern das Programmieren auf Android zu lernen und jetzt kommen schon die ersten Probleme.

Ich gehe mit einem Buch vor, bei der ich ein Spiel programmiere.

Ich habe 2 Activitys, einmal MueckenklatschActivity und GameActivity.
Im MueckenklatschActivity befindet sich die main.xml, dieser enthält einen Button.
Die GameAcitivty ist leer, also soll vorerst ein leeren Screen zeigen. (game.xml)

Will ich jetzt aber auf den Button klicken, tut sich entweder garnichts und wenn ich bisschen bei der Manifest rumfummel kommen Errors oder die App startet garnicht mehr.

Was mache ich denn da falsch?
Das liegt wahrscheinlich an der Manifest, da ich die Codes alle exakt wie aus dem Buch verglichen habe und es übereinstimmt.

Muss ich nicht erst bei der Manifest:

MueckenklatschActivity -> Add -> Intent Filter -> Label -> game.xml ?
Oder wie geht das?

Würde mich sehr freuen wenn ihr mir weiterhelft. :)

Gruß
GouJetir (Armin)

Antworten
Maximilian O
  • Forum-Beiträge: 990

28.01.2012, 14:02:45 via Website

Hey Armin,
erstmal herzlich willkommen :)

Ich glaube wir können dir besser weiterhelfen, wenn du uns mal deinen Code postest.

MfG Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
GouJetir
  • Forum-Beiträge: 14

28.01.2012, 16:28:13 via Website

Hallo und danke. :)

Das sind die Codes vom MueckenklatschActivity

1package de.androidnewcomer.Mueckenklatsch;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.Button;
9
10public class MueckenklatschActivity extends Activity implements OnClickListener {
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16 Button button = (Button) findViewById(R.id.button1);
17 button.setOnClickListener(this);
18}
19public void onClick(View v) {
20 startActivity(new Intent(this, GameAcitivty.class));
21}
22}

Das ist der Code von der GameActivity:

1package de.androidnewcomer.Mueckenklatsch;
2
3import android.app.Activity;
4import android.os.Bundle;
5
6public class GameAcitivty extends Activity {
7
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.game);
12 }
13
14
15 }

Jetzt habe ich gerade das Problem, dass sich die App garnicht öffnet.
Das zeigt mir die Console an:

1[2012-01-28 16:26:56 - SagHallo] Unable to resolve target 'android-16'
2[2012-01-28 16:27:15 - Mueckenklatsch] ------------------------------
3[2012-01-28 16:27:15 - Mueckenklatsch] Android Launch!
4[2012-01-28 16:27:15 - Mueckenklatsch] adb is running normally.
5[2012-01-28 16:27:15 - Mueckenklatsch] No Launcher activity found!
6[2012-01-28 16:27:15 - Mueckenklatsch] The launch will only sync the application package on the device!
7[2012-01-28 16:27:15 - Mueckenklatsch] Performing sync
8[2012-01-28 16:27:15 - Mueckenklatsch] Automatic Target Mode: launching new emulator with compatible AVD 'adf'
9[2012-01-28 16:27:15 - Mueckenklatsch] Launching a new emulator with Virtual Device 'adf'
10[2012-01-28 16:27:28 - Emulator] emulator: WARNING: Unable to create sensors port: Unknown error
11[2012-01-28 16:27:28 - Mueckenklatsch] New emulator found: emulator-5554
12[2012-01-28 16:27:28 - Mueckenklatsch] Waiting for HOME ('android.process.acore') to be launched...
13[2012-01-28 16:28:00 - Mueckenklatsch] HOME is up on device 'emulator-5554'
14[2012-01-28 16:28:00 - Mueckenklatsch] Uploading Mueckenklatsch.apk onto device 'emulator-5554'
15[2012-01-28 16:28:00 - Mueckenklatsch] Installing Mueckenklatsch.apk...
16[2012-01-28 16:28:14 - Mueckenklatsch] Success!
17[2012-01-28 16:28:14 - Mueckenklatsch] \Mueckenklatsch\bin\Mueckenklatsch.apk installed on device
18[2012-01-28 16:28:14 - Mueckenklatsch] Done!

— geändert am 28.01.2012, 16:29:21

Antworten
Maximilian O
  • Forum-Beiträge: 990

28.01.2012, 16:37:58 via Website

Hey,
hast du die 2. Activity auch im Manifest hinzugefügt? Damit Android diese kennt.

Dazu einfach im Manifest zwischen die Application Tags folgendes ergänzen:
1<activity android:name=".GameActivity"
2 android:label="@string/app_name">
3</activity>

Füge mal über startActivity(..) folgendes ein:
1Log.d("MeinSpiel", "Da");

Jetzt öffne mal das Logcat Window->Show View->DDMS. Wähle oben links dein Telefon aus. Dann siehst du unten was dein Telefon ausgibt. Dort sollte dann nach dem klick "Da" ausgegeben werden.

Übrigens, die Konsolenausgaben sind meist nicht wirklick hilfreich. Poste am besten die Logcat Ausgaben.

MfG Maximilian

— geändert am 28.01.2012, 16:38:18

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
GouJetir
  • Forum-Beiträge: 14

28.01.2012, 17:33:06 via Website

Ich habe das jetzt ohne diese Log.d("Meinspiel", "Da"); gemacht weil irgendwie das Log unterstrichen wird.

Habe die App (per Emulator) gestartet und wenn ich auf den Button klicke erscheint:

Sorry!
The Application Mueckenklatsch (process de.androidnewcomer.mueckenklatsch) has stopped unexpectledy. Please try again.

Das liefert Logcat.

01-28 16:31:20.188: D/AndroidRuntime(278): Shutting down VM
01-28 16:31:20.188: W/dalvikvm(278): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-28 16:31:20.208: E/AndroidRuntime(278): FATAL EXCEPTION: main
01-28 16:31:20.208: E/AndroidRuntime(278): android.content.ActivityNotFoundException: Unable to find explicit activity class {de.androidnewcomer.mueckenklatsch/android.app.Activity}; have you declared this activity in your AndroidManifest.xml?
01-28 16:31:20.208: E/AndroidRuntime(278): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.app.Activity.startActivityForResult(Activity.java:2817)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.app.Activity.startActivity(Activity.java:2923)
01-28 16:31:20.208: E/AndroidRuntime(278): at de.androidnewcomer.mueckenklatsch.MueckenklatschActivity.onClick(MueckenklatschActivity.java:21)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.view.View.performClick(View.java:2408)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.view.View$PerformClick.run(View.java:8816)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.os.Handler.handleCallback(Handler.java:587)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.os.Handler.dispatchMessage(Handler.java:92)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.os.Looper.loop(Looper.java:123)
01-28 16:31:20.208: E/AndroidRuntime(278): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-28 16:31:20.208: E/AndroidRuntime(278): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 16:31:20.208: E/AndroidRuntime(278): at java.lang.reflect.Method.invoke(Method.java:521)
01-28 16:31:20.208: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-28 16:31:20.208: E/AndroidRuntime(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-28 16:31:20.208: E/AndroidRuntime(278): at dalvik.system.NativeStart.main(Native Method)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

28.01.2012, 17:35:26 via Website

tja dann bleiben dir nur folgende möglichkeiten :

1) Du liest dir die fehlermeldung mal in ruhe durch und denkst nach
2) du liest dir die lösungsvorschläge dieses threads nochmal durch

steht alles da

swordiApps Blog - Website

Antworten
GouJetir
  • Forum-Beiträge: 14

28.01.2012, 17:44:02 via Website

01-28 16:31:20.208: E/AndroidRuntime(278): android.content.ActivityNotFoundException: Unable to find explicit activity class {de.androidnewcomer.mueckenklatsch/android.app.Activity}; have you declared this activity in your AndroidManifest.xml?

Aber die habe ich doch schon eingefügt.

Meine AndroidManifest.xml sieht jetzt so aus:
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="de.androidnewcomer.mueckenklatsch"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk android:minSdkVersion="8" />
8
9 <application
10 android:icon="@drawable/ic_launcher"
11 android:label="@string/app_name" >
12 <activity
13 android:name=".MueckenklatschActivity"
14 android:label="@string/app_name" >
15 <intent-filter>
16
17 <action android:name="android.intent.action.MAIN" />
18
19 <category android:name="android.intent.category.LAUNCHER" />
20 </intent-filter>
21 </activity>
22 </application>
23 <activity android:name=".GameActivity"
24 android:label="@string/app_name">
25</activity>
26</manifest>

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

28.01.2012, 18:39:21 via App

dann halt Tippfehler oder falsches package.

dieser Fehler ist im web mindestens 5000 mal gelöst

swordiApps Blog - Website

Antworten
Maximilian O
  • Forum-Beiträge: 990

28.01.2012, 18:44:03 via App

Ich hab doch extra geschrieben, dass du das <activity></activity zwischen die <application></application> schreiben sollst

— geändert am 28.01.2012, 18:45:22

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
GouJetir
  • Forum-Beiträge: 14

29.01.2012, 11:25:45 via Website

Ist das so richtig? Weil es kommt immernoch der Error, wenn ich auf den Button klicke.

1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="de.androidnewcomer.mueckenklatsch"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk android:minSdkVersion="8" />
8
9 <application
10 android:icon="@drawable/ic_launcher"
11 android:label="@string/app_name" >
12 <activity
13 android:name=".MueckenklatschActivity"
14 android:label="@string/app_name" >
15
16 <intent-filter>
17
18
19 <action android:name="android.intent.action.MAIN" />
20
21 <category android:name="android.intent.category.LAUNCHER" />
22 </intent-filter>
23 </activity>
24 <activity
25 android:name=".GameActivity"
26 android:label="@string/app_name">
27 </activity>
28</application>
29</manifest>

Antworten
Maximilian O
  • Forum-Beiträge: 990

29.01.2012, 11:40:23 via Website

So sieht es richtig aus. Was sagt denn das LogCat?

MfG

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
GouJetir
  • Forum-Beiträge: 14

29.01.2012, 12:32:31 via Website

LogCat zeigt folgendes an:

01-29 11:32:21.076: D/AndroidRuntime(280): Shutting down VM
01-29 11:32:21.076: W/dalvikvm(280): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-29 11:32:21.096: E/AndroidRuntime(280): FATAL EXCEPTION: main
01-29 11:32:21.096: E/AndroidRuntime(280): android.content.ActivityNotFoundException: Unable to find explicit activity class {de.androidnewcomer.mueckenklatsch/android.app.Activity}; have you declared this activity in your AndroidManifest.xml?
01-29 11:32:21.096: E/AndroidRuntime(280): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.app.Activity.startActivityForResult(Activity.java:2817)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.app.Activity.startActivity(Activity.java:2923)
01-29 11:32:21.096: E/AndroidRuntime(280): at de.androidnewcomer.mueckenklatsch.MueckenklatschActivity.onClick(MueckenklatschActivity.java:21)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.view.View.performClick(View.java:2408)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.view.View$PerformClick.run(View.java:8816)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.os.Handler.handleCallback(Handler.java:587)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.os.Handler.dispatchMessage(Handler.java:92)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.os.Looper.loop(Looper.java:123)
01-29 11:32:21.096: E/AndroidRuntime(280): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-29 11:32:21.096: E/AndroidRuntime(280): at java.lang.reflect.Method.invokeNative(Native Method)
01-29 11:32:21.096: E/AndroidRuntime(280): at java.lang.reflect.Method.invoke(Method.java:521)
01-29 11:32:21.096: E/AndroidRuntime(280): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-29 11:32:21.096: E/AndroidRuntime(280): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-29 11:32:21.096: E/AndroidRuntime(280): at dalvik.system.NativeStart.main(Native Method)

Antworten
Maximilian O
  • Forum-Beiträge: 990

29.01.2012, 12:44:20 via Website

Komisch, er kennt die Activity immer noch nicht.

Versuch mal deinen Code in der 1. Klasse umzubauen:

1public class MueckenklatschActivity extends Activity{
2 /** Called when the activity is first created. */
3 @Override
4 public void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.main);
7 Button button = (Button) findViewById(R.id.button1);
8 button.setOnClickListener(new OnClickListener() {
9
10 @Override
11 public void onClick(View v) {
12 // TODO Auto-generated method stub
13 Intent intent = new Intent(getApplicationContext(), GameActivity.class);
14 startActivity(intent);
15 }
16 });
17}

So sieht das wenigsten etwas übersichtlich aus.

MfG

— geändert am 29.01.2012, 12:44:29

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Felix
  • Forum-Beiträge: 259

29.01.2012, 14:50:32 via Website

Tach!

Maximilian O
Komisch, er kennt die Activity immer noch nicht.

Wird wohl am Schreibfehler Activity vs. Acitivty liegen. Selbst mit solchen Vertippern bekommt man die Activity im Manifest eingetragen, wenn man es in Eclipse mit der GUI macht und nicht händisch (zumal, wenn man noch keine Ahnung hat, wie der Aufbau des Manifests auszusehen hat).

Zudem scheint mir die Fehlermeldung nicht zum Code zu passen. Wenn ich eine von Activity abgeleitete Klasse namens Second starten will, die nicht im Manifest eingetragen ist, lautet die Meldung:

1android.content.ActivityNotFoundException: Unable to find explicit activity class {local.test/local.test.Second}; have you declared this activity in your AndroidManifest.xml?

Bei ihm steht in der Meldung:

1android.content.ActivityNotFoundException: Unable to find explicit activity class {de.androidnewcomer.mueckenklatsch/android.app.Activity}; have you declared this activity in your AndroidManifest.xml?

Und das sieht mir danach aus, als ob er im Intent Androids Activity-Klasse angegeben hat und nicht seine GameAcitivty (sic!).

Versuch mal deinen Code in der 1. Klasse umzubauen: [...] So sieht das wenigsten etwas übersichtlich aus.

Der war nicht verkehrt. Unübersichtlich wird es erst dann, wenn mehrere verschiedene onClick-Handler in der Activity benötigt werden und man diese alle auf die eine Methode verweisen lässt, in der dann eine Fallunterscheidung getroffen werden muss. Aber um das Verständnis zu erhöhen kann man immer noch Kommentare hinzufügen.


Felix.

Antworten