Ausnahme, wenn ich meine Anwendung aus Eclipse

Ich habe mit diesem problem seit fast 2 Monaten jetzt, und kann ' T es herausfinden. Das problem ist, dass wenn meine Anwendung läuft, und ich Lauf (Neuinstallation) meine Anwendung aus Eclipse, bekomme ich eine Fehlermeldung, dass meine Anwendung abgestürzt ist 'Leider aufgehört hat.'. Ich merke, dass es auch Auftritt, wenn ich ihn laufen Weg von meinem PC/Eclipse, ich denke, dass es passiert, nur nach ich nicht es für eine Weile.

Es tritt nur auf, wenn die app aktiv ist, in der 3. Aktivität (BaseDiagramActivity) und dann habe ich Sie die app erneut ausführen aus Eclipse heraus. Ich habe gezupft grundsätzlich alle Anwendung, außer die 3 Aktivitäten und Es ist trotzdem passiert.

Habe ich gesucht und gesucht nach einer Lösung für dieses problem, aber finde keine gute Antwort oder eine, die für mich gilt.

Es scheint nicht wie ein hardware-oder android-version Frage wie betreibe ich diese auf meinem tablet (4.0.3) und mein Handy (4.0.2, wurde das geschehen auf 4.0.1 vor dem update). Es sei denn natürlich es ist ein ice cream sandwich-bug.

Lassen Sie mich wissen, wenn noch mehr info benötigt wird.

Die Ausnahme (Tag=AndroidRuntime)

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException
   at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938)
   at android.app.ActivityThread.access$1300(ActivityThread.java:123)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4424)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
   at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
   at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362)
   at android.app.LoadedApk.getClassLoader(LoadedApk.java:305)
   at android.app.LoadedApk.makeApplication(LoadedApk.java:474)
   ... 11 more

Der Android-Code

LoadedApk.initializeJavaContextClassLoader() - Linie 362 scheint der Täter

Unten sind die relevanten Dateien:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="[my package]"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />

    <application 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" >
        <activity 
            android:name="HomeActivity" 
            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="LoadDiagramActivity" android:label="Load Diagram"></activity>
        <activity android:name="BaseDiagramActivity" android:label="Base Diagram"></activity>
    </application>

</manifest>

HomeActivity.java

public class HomeActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.home);

        Button diagramButton = (Button)findViewById(R.id.diagram);
        diagramButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startActivity(new Intent(HomeActivity.this, LoadDiagramActivity.class));
            }
        });
    }
}

LoadDiagramActivity.java

public class LoadDiagramActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.load_diagram_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            case R.id.add_new_diagram:
                startActivity(new Intent(this, BaseDiagramActivity.class));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

BaseDiagramActivity.java

ist es eigentlich auch egal, was die Aktivität hier ist, die Ausnahme tritt auf, so lange als,, Dritte " - Aktivität gestartet wird (oder durch klicken auf die Schaltfläche hinzufügen auf LoadDiagramActivity.

public class BaseDiagramActivity extends Activity {
}

home.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/diagram"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Diagram" />

</LinearLayout>

Zusätzliche Informationen

Wenn ich zerlegte mein Projekt, um Sie zu bitten eine einfachere Antwort, zog ich alles in den Paket-namespace. Im eigentlichen Projekt gibt es 5 namespaces, Sie waren immer noch vorhanden, wenn ich Tests wurden mit der abgespeckten version lassen sich jedoch gerade nicht genannt (soweit ich das sehen konnte).

Hier sind die Pakete:

  • [package] - Allgemeine Logik
  • [package].activities - alle Aktivitäten und Basis-Aktivitäten
  • [package].database - alle Interaktionen mit der Datenbank
  • [package].models - Modelle, für das speichern/laden von Daten
  • [package].renderables - Objekte gezeichnet auf einer Leinwand

Ich habe versucht, fügen Sie eine "android:sharedUserId" - Attribut der manifest-und es schien, nichts zu tun, beide Male, die ich versuchte. Als ich anfangs dieser Untersuchung kam ich zu dem Schluss, dass die gemeinsame Benutzer-id nur angewendet, um verschiedene Projekte, nicht verschiedene Pakete an.

Außerdem glaube ich nicht, es war jegliche Interaktion mit der Datenbank, wenn ich zog alles nach unten. Die Tatsache, dass die 3. Aktivität könnte sein, jede Tätigkeit, auch HomeActivity, war etwas, was gegen diese Theorie.

Nützliche links

Update 1/11/2012

Letzten paar Tage habe ich sprang zurück in diesem Projekt erstellte ich ein brand neues Projekt in Eclipse Juno (war auf Helios vor) und übertragen alles über manuell so, dass Eclipse und Android tools behandelt, die fast alle von der MANIFESTEN Interaktion, aber es ist immer noch Auftritt. Ich werde dir es ein bisschen mehr in den nächsten Tagen und aktualisieren, wenn ich was finden.

FYI mein neues Projekt ist die Zielsetzung folgende:

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15" />

Die neue Projekt-Struktur hat auch alle Aktivitäten in der root-Paket jetzt (dh. [Paket], nicht [Paket].Aktivitäten). Ich bin auch mit der (neuen?) die syntax der übergeordneten Aktivität:

<meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value="[my package].LoadDiagramActivity" />

Ist es auch immer noch auftretenden auf meine nun aktualisierte Galaxy Nexus läuft Jellybean 4.1.2.

  • Können Sie eine einfache app-code auf Github oder woanders?
  • Ich kann nicht sehr leicht, jetzt, da ich gerade umgezogen bin und stecken ohne internet auf meinem desktop (die nicht über WLAN). Mit meinem Handy zu posten. Ich glaube, der code sollte funktionieren, wenn Sie einfach erstellen Sie diese Dateien in ein eclipse-Projekt.
  • Versuchen, Daten zu replizieren, die dieses Verhalten auf HoneyComb oder GingerBread, ist es wahrscheinlich eine bug in ICS aber.
  • Unabhängig davon, ob es funktioniert in 2.3 oder 3.0, es wird nicht wirklich das Problem zu lösen obwohl. Ich war auch nicht planen auf welche auf weniger als 4,0 jedenfalls. Eine der nützliche links scheint die target-version 8 als Mindest-SDK-version.
  • Könntest du bitte noch einmal testen, dann posten alle Fehler logcat (was ich denke, es gibt mehr nach ... 11 more)? Oder kann man adb bugreport und fügen Sie die Datei irgendwo, dann gib mir den link?
  • ... 11 more ist der Letzte Fehler/rote Linie in logcat.
  • Ein häufiger Fehler, wenn es um die Auslegung Fehler aus dem Betriebssystem selbst ist, dass oft gibt es eine Warnung über die Fehler in der log. Ich würde das scrollen nach oben und finden Sie, wenn Sie eine ungewöhnliche log-Eintrag, der nur Auftritt, in diesem Umstand. Ich habe gesehen, wie Sie auch in der info-Ebene, obwohl es selten ist. Es gibt oft den Hinweis, dass der benötigt wird. (Ein solcher log-Eintrag war "Unexpected Resume-Aktivität ... wenn es schon wieder." Verursachte mir eine Menge Mist. Behoben ist es aber nicht 🙂
  • Die Warnungen über die Ausnahme sind: TextLayoutCache : computeValuesWithHarfbuzz -- gezwungen, ein Durchlauf, UND dalvikvm (gleiche PID) : threadid=1: thread beenden mit Ausnahme uncaught (Gruppe=0x40a621f8)

InformationsquelleAutor Daniel Imms | 2012-03-17
Schreibe einen Kommentar