1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Newbie-Verwirrung: Intent und setContentView

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von funk, 17.08.2010.

  1. funk, 17.08.2010 #1
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Hallo,

    ich bin mal wieder verwirrt vom Verhalten meiner App:

    ich starte in einer Activity einen Intent, der dann im Grunde Datenbankoperationen
    wie im Notepad-Example durchführen soll.
    Soweit komm ich jedoch nicht und hab daher den Code der zweiten
    Activity so beschnitten, dass sie nur einen Button anzeigen soll...
    Beim Debuggen hab ich nun festgestellt, dass zwar die onCreate der
    zweiten Activity gestartet wird, aber das Programm bei setContenView
    abstürzt.
    Die XML hab ich mehrfach durchgeschaut und kann da einfach keinen
    Syntax-Fehler finden (habe sie auch ausgetauscht und durch einfachere
    Layouts ersetzt mit dem gleichen Ergebnis..).
    Jetzt hab ich ein try-catch um setContentView gebastelt und damit wird
    die Activity angezeigt...schmeißt aber folgende Exception:
    Code:
    08-17 11:39:51.283: ERROR/setContenView(2353): android.app.ListActivity.onContentChanged(ListActivity.java:236)
    08-17 11:39:51.283: ERROR/setContenView(2353): com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
    08-17 11:39:51.291: ERROR/setContenView(2353): android.app.Activity.setContentView(Activity.java:1622)
    08-17 11:39:51.291: ERROR/setContenView(2353): de.zeh.android.Kalloc.BTNodes_list.onCreate(BTNodes_list.java:32)
    08-17 11:39:51.291: ERROR/setContenView(2353): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    08-17 11:39:51.298: ERROR/setContenView(2353): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    08-17 11:39:51.298: ERROR/setContenView(2353): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    08-17 11:39:51.298: ERROR/setContenView(2353): android.app.ActivityThread.access$2200(ActivityThread.java:119)
    08-17 11:39:51.298: ERROR/setContenView(2353): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    08-17 11:39:51.298: ERROR/setContenView(2353): android.os.Handler.dispatchMessage(Handler.java:99)
    08-17 11:39:51.306: ERROR/setContenView(2353): android.os.Looper.loop(Looper.java:123)
    08-17 11:39:51.306: ERROR/setContenView(2353): android.app.ActivityThread.main(ActivityThread.java:4363)
    08-17 11:39:51.306: ERROR/setContenView(2353): java.lang.reflect.Method.invokeNative(Native Method)
    08-17 11:39:51.306: ERROR/setContenView(2353): java.lang.reflect.Method.invoke(Method.java:521)
    08-17 11:39:51.306: ERROR/setContenView(2353): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-17 11:39:51.314: ERROR/setContenView(2353): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-17 11:39:51.314: ERROR/setContenView(2353): dalvik.system.NativeStart.main(Native Method)
    
    Kann mir das jemand entschlüsseln bzw. erklären? Vor allem, warum läuft
    die App ins catch und zeigt trotzdem das Layout danach an?

    Bin für jede Hilfe dankbar!

    Viele Grüße,
    Frank
     
  2. the_alien, 17.08.2010 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    1. Ist der Stacktrace nicht vollständig.
    2. Würde es helfen den relevanten Code hier zu posten.
     
  3. funk, 17.08.2010 #3
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Fair enough! :)

    also der Code der zweiten Activity besteht einfach nur aus

    Code:
    package ...
    
    import ...
    
    public class BTNodes_list extends ListActivity {
    //    private BTNodesDbAdapter mDbHelper;
        public static final int BACK_ID = Menu.FIRST;
        public static final int DELETE_ID = Menu.FIRST;
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.d("Log BTNodes_list 1","onCreate gestartet");
            try {
                setContentView(R.layout.btnodes_list);
                Log.d("Log BTNodes_list 2","setContentView");
            }
            catch (Exception e)
            {
               final String TAG = "setContenView";
               StackTraceElement[] arr = e.getStackTrace();
    
               for (int i=0; i<arr.length; i++)
               {
                   Log.e(TAG,arr[i].toString());
               }
                Throwable cause = e.getCause();
                         if(cause != null) {
                             Log.e(TAG,"Cause: "+e.toString());
                             arr = cause.getStackTrace();
                             for (int i=0; i<arr.length; i++)
                             {
                                    Log.e(TAG,arr[i].toString());
                             }
    
                         }
            }
            
            Button backButton = (Button) findViewById(R.id.button_back);
            Log.d("Log BTNodes_list 3","Button initialisiert");
            backButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent buttonintent = new Intent();
                    setResult(RESULT_OK, buttonintent);
                    finish();
                    }
            });
    /*        mDbHelper = new BTNodesDbAdapter(this);
            mDbHelper.open();
            fillData();
            createNode();
            registerForContextMenu(getListView());
    */    }
    
    das zugehörige layout sieht so aus:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView android:id="@+id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hier steht irgendetwas"/>
         <Button android:id="@+id/button_back"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentBottom="true"
              android:text="@string/bt_button_back"/>
    </LinearLayout>
    und das ausführlichere Stacktrace sieht so aus (ich hoffe ich hab
    das richtige eingefügt...sonst muss ich mal stacktrace auslesen 101
    googlen... ;) )

    Code:
    08-17 12:34:42.723: DEBUG/Log ListView 2(2973): Position Intent gesetzt
    08-17 12:34:42.723: INFO/ActivityManager(1290): Starting activity: Intent { cmp=de.zeh.android.Kalloc/.BTNodes_list }
    08-17 12:34:42.747: DEBUG/Log ListView 3(2973): Position Intent gestartet
    08-17 12:34:42.778: DEBUG/Log BTNodes_list 1(2973): onCreate gestartet
    08-17 12:34:42.856: ERROR/setContenView(2973): android.app.ListActivity.onContentChanged(ListActivity.java:236)
    08-17 12:34:42.856: ERROR/setContenView(2973): com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
    08-17 12:34:42.856: ERROR/setContenView(2973): android.app.Activity.setContentView(Activity.java:1622)
    08-17 12:34:42.856: ERROR/setContenView(2973): de.zeh.android.Kalloc.BTNodes_list.onCreate(BTNodes_list.java:27)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.app.ActivityThread.access$2200(ActivityThread.java:119)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    08-17 12:34:42.864: ERROR/setContenView(2973): android.os.Handler.dispatchMessage(Handler.java:99)
    08-17 12:34:42.872: ERROR/setContenView(2973): android.os.Looper.loop(Looper.java:123)
    08-17 12:34:42.872: ERROR/setContenView(2973): android.app.ActivityThread.main(ActivityThread.java:4363)
    08-17 12:34:42.872: ERROR/setContenView(2973): java.lang.reflect.Method.invokeNative(Native Method)
    08-17 12:34:42.872: ERROR/setContenView(2973): java.lang.reflect.Method.invoke(Method.java:521)
    08-17 12:34:42.872: ERROR/setContenView(2973): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-17 12:34:42.880: ERROR/setContenView(2973): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-17 12:34:42.880: ERROR/setContenView(2973): dalvik.system.NativeStart.main(Native Method)
    08-17 12:34:42.880: DEBUG/Log BTNodes_list 3(2973): Button initialisiert
    08-17 12:34:43.184: INFO/ActivityManager(1290): Displayed activity de.zeh.android.Kalloc/.BTNodes_list: 425 ms (total 425 ms)
    08-17 12:34:43.364: ERROR/BluetoothEventLoop.cpp(1290): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/2985/hci0
    08-17 12:34:43.434: VERBOSE/BluetoothEventRedirector(1633): Received android.bluetooth.device.action.FOUND
    08-17 12:34:45.130: DEBUG/BT HSHFP(1498): pulled 00:14:21:00:0A:F5 off auto-connect queue
    08-17 12:34:45.130: DEBUG/BT HSHFP(1498): Headset state 0 -> 1, result = 1
    08-17 12:34:45.145: DEBUG/BT HSHFP(1498): SDP UUID: TYPE_HANDSFREE
    08-17 12:34:45.161: VERBOSE/BluetoothEventRedirector(1633): Received android.bluetooth.headset.action.STATE_CHANGED
    08-17 12:34:45.161: DEBUG/CachedBluetoothDevice(1633): onProfileStateChanged:[]
    08-17 12:34:45.169: INFO/BT HSHFP(1498): Created RFCOMM socket fd 43.
    08-17 12:34:45.176: INFO/BT HSHFP(1498): async connect is in progress (Operation now in progress)
    08-17 12:34:45.176: DEBUG/PhoneApp(1498): mReceiver: HEADSET_STATE_CHANGED_ACTION
    08-17 12:34:45.176: DEBUG/PhoneApp(1498): ==> new state: 1
    08-17 12:34:45.192: DEBUG/PhoneApp(1498): updateProximitySensorMode: state = IDLE
    08-17 12:34:45.192: DEBUG/PhoneApp(1498): updateProximitySensorMode: lock already released.
    08-17 12:34:45.192: DEBUG/NotificationMgr(1498): updateInCallNotification()...
    08-17 12:34:46.137: WARN/KeyCharacterMap(2973): Can't open keycharmap file
    08-17 12:34:46.137: WARN/KeyCharacterMap(2973): Error loading keycharmap file '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.65538.devname='qtouch-touchscreen'
    08-17 12:34:46.137: WARN/KeyCharacterMap(2973): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    08-17 12:34:46.255: INFO/BtOppRfcommListener(1707): Accept thread started on channel 12
    08-17 12:34:46.687: ERROR/BluetoothEventLoop.cpp(1290): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/2985/hci0
    08-17 12:34:46.739: VERBOSE/BluetoothEventRedirector(1633): Received android.bluetooth.device.action.FOUND
    

    Interessant finde ich auch, dass der Intent auf dem Button problemlos funktioniert und mich in meine erste Activity zurückführt, wenn ich jedoch ein Menü anlege und dort genau das gleiche (code-mässig) reinschreibe kein intent mit .finish() ausgeführt wird...
     
  4. funk, 17.08.2010 #4
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Ok,

    kann es vielleicht sein dass es ein Problem macht, wenn es in Activity 1
    eine ListView gibt und Activity 2 eine ListActivity extended?

    Ich bin wirklich am verzweifeln! Das ist schon wieder so ein nebensächliches
    Problem, dass mich stundenlang nicht weiterkommen lässt...

    Mit der Bitte um Antworten,
    Frank
     

Diese Seite empfehlen