Mit startActivity() neue Activity aufrufen

  • Antworten:17
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 21

03.05.2011, 15:10:50 via Website

Hallo zusammen

mir ist leider unklar, wieso ich aus meiner Start-Activity keine weitere Activity (im gleichen Package) beim Klick auf einen Button aufrufen kann. Ich definiere einen Intent und versuche dann über startActivity(myIntent) die neue Activity aufzurufen. Nach dem Aufruf bricht die App mit 'The application x has stopped unexpectedly" ab.

Folgendes habe ich noch überprüft:

- Die zweite Activity ist im Manifest definiert
- Logcat wirft eine "IllegalStateException" mit "Could not execute method of the activity"
- Den ersten Parameter im Intent habe ich sowohl mit "this" als auch "ersteActivity.this" ausprobiert

Erste Activity:
1package ch.yvesbeutler.prototype;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.view.View;
7
8public class Startseite extends Activity {
9 /** Called when the activity is first created. */
10 @Override
11 public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.startseite);
14 }
15
16
17
18 public void onClickSavePosition(final View openView) {
19
20 Intent myIntent = new Intent(Startseite.this, SavePosition.class);
21 startActivity(myIntent);
22 }
23}

Zweite Activity:
1package ch.yvesbeutler.prototype;
2
3import android.app.Activity;
4import android.os.Bundle;
5
6public class SavePosition extends Activity {
7 /** Called when the activity is first created. */
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.save_position);
12 }
13}

Manifest.xml
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="ch.yvesbeutler.prototype"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <uses-sdk android:minSdkVersion="7" />
7
8 <application android:icon="@drawable/icon" android:label="@string/app_name">
9 <activity android:name=".Startseite"
10 android:label="@string/app_name">
11 <intent-filter>
12 <action android:name="android.intent.action.MAIN" />
13 <category android:name="android.intent.category.LAUNCHER" />
14 </intent-filter>
15 </activity>
16
17 <activity android:name=".savePosition" android:label="@string/app_name" />
18
19 </application>
20</manifest>

Das XML für das Design von der Startseite-Activity poste ich jetzt mal (noch) nicht. Dort rufe ich die Methode "onClickSavePosition" via android:onClick auf.

Ich hoffe ihr könnt mir weiterhelfen
gruss Yves

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

03.05.2011, 15:38:34 via Website

Hey,

in deinem Intent schreibst du "SavePosition.class", in der Manifest steht aber als Activity "savePosition", also klein geschrieben. Ändere das mal ab.

Grüße,
Malte

Antworten
  • Forum-Beiträge: 21

03.05.2011, 15:43:20 via Website

Hallo Malte,

vielen Dank dass du mir diesen peinlichen Fehler aufgezeigt hast. Ich hätte jedoch noch eine weitere Frage: Spielt es eine Rolle ob die Activity die man aufrufen will nicht von Activity selbst sondern von der Google-Klasse MapActivity ableitet? Ich habe unzählige Beispiele erstellt und gehe nicht davon aus, dass ich jedes Mal einen Schreibfehler im Code hatte :*)


Gruss yves

EDIT: Habe gerade getestet, und es wirft einen Fehler, wenn die zweite Activity von MapActivity ableitet :mad:

— geändert am 03.05.2011, 15:46:37

Antworten
  • Forum-Beiträge: 2.644

03.05.2011, 17:17:52 via App

mapactivity kommt ja auch von activity. also geht das natürlich. dein fehler ist woanders

swordiApps Blog - Website

Antworten
  • Forum-Beiträge: 21

03.05.2011, 18:50:44 via Website

Markus Gursch
mapactivity kommt ja auch von activity. also geht das natürlich. dein fehler ist woanders

Es ist unmöglich, dass der Fehler nicht wegen der MapActivity-Klasse kommt. Ich änderte einzig die abzuleitende Klasse und fügte die obligatorische Methode der MapActivity mitein. Ansonsten ist der Code immer noch der selbe, welcher auch funktioniert wenn die Klasse von Activity ableitet.

Also habe ich immer noch keine Lösung für mein Problem, eine MapActivity-Klasse aufzurufen..

Antworten
  • Forum-Beiträge: 2.644

03.05.2011, 19:02:27 via Website

du solltest mir glauben :D

http://code.google.com/intl/de-DE/android/add-ons/google-apis/reference/com/google/android/maps/MapActivity.html

hier siehst du, dass mapactivity von activity abgeleitet wird.

dein fehler liegt definitiv woanders.

für eine map brauchst die google apis. die sind extra zu installieren und beim anlegen des projekte auszuwählen.

swordiApps Blog - Website

Antworten
  • Forum-Beiträge: 21

03.05.2011, 19:04:50 via Website

Die API's sind allesamt installiert und alls Projektgrundlage wurde die Google API 10 genommen.
Sollte von daher alles in Ordnung sein.

Hast du sonst noch irgend einen Lösungsansatz für mich?

Grüsse
Yves

Antworten
  • Forum-Beiträge: 21

03.05.2011, 19:29:48 via Website

Markus Gursch
was sagt der logcat??

Logcat:
105-03 17:23:34.578: ERROR/AndroidRuntime(310): FATAL EXCEPTION: main
205-03 17:23:34.578: ERROR/AndroidRuntime(310): java.lang.IllegalStateException: Could not execute method of the activity
305-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.view.View$1.onClick(View.java:2072)
405-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.view.View.performClick(View.java:2408)
505-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.view.View$PerformClick.run(View.java:8816)
605-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.os.Handler.handleCallback(Handler.java:587)
705-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.os.Handler.dispatchMessage(Handler.java:92)
805-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.os.Looper.loop(Looper.java:123)
905-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.app.ActivityThread.main(ActivityThread.java:4627)
1005-03 17:23:34.578: ERROR/AndroidRuntime(310): at java.lang.reflect.Method.invokeNative(Native Method)
1105-03 17:23:34.578: ERROR/AndroidRuntime(310): at java.lang.reflect.Method.invoke(Method.java:521)
1205-03 17:23:34.578: ERROR/AndroidRuntime(310): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1305-03 17:23:34.578: ERROR/AndroidRuntime(310): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1405-03 17:23:34.578: ERROR/AndroidRuntime(310): at dalvik.system.NativeStart.main(Native Method)
1505-03 17:23:34.578: ERROR/AndroidRuntime(310): Caused by: java.lang.reflect.InvocationTargetException
1605-03 17:23:34.578: ERROR/AndroidRuntime(310): at ch.yvesbeutler.prototype.Startseite.onClickSavePosition(Startseite.java:21)
1705-03 17:23:34.578: ERROR/AndroidRuntime(310): at java.lang.reflect.Method.invokeNative(Native Method)
1805-03 17:23:34.578: ERROR/AndroidRuntime(310): at java.lang.reflect.Method.invoke(Method.java:521)
1905-03 17:23:34.578: ERROR/AndroidRuntime(310): at android.view.View$1.onClick(View.java:2067)
2005-03 17:23:34.578: ERROR/AndroidRuntime(310): ... 11 more
2105-03 17:23:34.578: ERROR/AndroidRuntime(310): Caused by: java.lang.NoClassDefFoundError: ch.yvesbeutler.prototype.SavePosition
2205-03 17:23:34.578: ERROR/AndroidRuntime(310): ... 15 more

und hier noch die abgeänderte Activity:
1package ch.yvesbeutler.prototype;
2
3import com.google.android.maps.MapActivity;
4
5import android.os.Bundle;
6
7public class SavePosition extends MapActivity {
8 /** Called when the activity is first created. */
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.save_position);
12 }
13
14 /* (non-Javadoc)
15 * @see com.google.android.maps.MapActivity#isRouteDisplayed()
16 */
17 @Override
18 protected boolean isRouteDisplayed() {
19 // TODO Auto-generated method stub
20 return false;
21 }
22}

Ich kann leider nichts nützliches aus dem Logcat-Report lesen. Vielleicht siehst du den Fehler.

Danke für deine Hilfe!

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

03.05.2011, 19:50:54 via Website

Mal unabhängig von allen bisherigen Lösungsansätzen: Fehlt da in deinem Manifest nicht was?

1<uses-library android:name="com.google.android.maps" />

und

1<uses-permission android:name="android.permission.INTERNET">

zum Beispiel. Hast du deinen API-Key eingetragen?

Antworten
  • Forum-Beiträge: 21

03.05.2011, 19:54:58 via Website

Ich bin mir bewusst, dass ich diesen Code in das Manifest einbauen muss, damit ich die GoogleMapView verwenden kann. Doch im Moment zeigt meine zweite Activity nur ein Label, so kann der Code doch noch weggelassen werden? Werde probehalber trotzdem mal die Library im Manifest einbinden.

Danke für den Tipp!

[EDIT] Hat auch nichts gebracht, schade..

— geändert am 03.05.2011, 19:56:48

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

03.05.2011, 20:06:35 via Website

Dachte ich mir fast. Kannst du mal das Layout deiner Startseite posten?

Antworten
  • Forum-Beiträge: 21

03.05.2011, 20:10:07 via Website

Thomas M.
Dachte ich mir fast. Kannst du mal das Layout deiner Startseite posten?

startseite.xml
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android=
3 "http://schemas.android.com/apk/res/android"
4 android:orientation="vertical"
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 android:background="@color/weiss" >
8
9 <TextView
10 style="@android:style/TextAppearance.Large"
11 android:layout_width="fill_parent"
12 android:layout_height="wrap_content"
13 android:paddingTop="30px"
14 android:paddingBottom="20px"
15 android:text="@string/startseite_title"
16 android:textColor="@color/schwarz"
17 android:gravity="center" />
18
19 <Button
20 android:layout_width="fill_parent"
21 android:layout_height="wrap_content"
22 android:text="@string/start_button1"
23 android:onClick="onClickSavePosition" />
24
25</LinearLayout>

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

03.05.2011, 20:40:55 via App

Wo ist denn deine Mapview eingebunden? Sehe die dort nicht oder ist die in einer anderen xml?

Grüße,
Malte

Antworten
  • Forum-Beiträge: 21

03.05.2011, 21:09:31 via Website

Ich erkläre euch mein geplantes Projekt nochmals:

Ich möchte die Startseite-Activity als Menü verwenden um dann via Button auf eine zweite Activity mit einer MapView zu gelangen. Da ich aber den Aufruf mit dem Intent nicht hinkriege, habe ich in der zweiten Activity (SavePosition) noch keine MapView eingebunden, sondern lediglich das Standard-XML von Android angezeigt. Ich dachte der Fehler würde klarer sein, wenn ich auf der zweiten Activity noch keinen wirklich brauchbaren Code habe.

Ich möchte im Moment einfach die zweite Activity aufrufen, dort wird später dann eine MapView eingebaut (sonst macht die MapActivity-Klasse ja gar keinen Sinn :grin: ) Nur leider stürzt meine bisherige App immer beim Aufruf mit startActivity() ab.

Hoffe das war verständlich..

Antworten
  • Forum-Beiträge: 21

05.05.2011, 10:17:17 via Website

Hat keiner ein funktionierendes Beispiel, wie er eine MapActivity von einer normalen Activity aus aufruft? Ich bin einfach nicht im stande dazu und finde den Fehler nicht :(

Bin für jede Hilfe dankbar..

[EDIT] Fehler hat sich irgendwie behoben, kann leider keine genauen Informationen darüber geben..

— geändert am 03.06.2011, 16:18:42

Antworten

Empfohlene Artikel