Newbie-Verwirrung: Intent und setContentView

F

funk

Ambitioniertes Mitglied
2
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
 
1. Ist der Stacktrace nicht vollständig.
2. Würde es helfen den relevanten Code hier zu posten.
 
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...
 
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
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
172
swa00
swa00
Laser5001
Antworten
3
Aufrufe
656
swa00
swa00
W
Antworten
2
Aufrufe
754
rene3006
R
Zurück
Oben Unten