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
- stackoverflow: android.app.Anwendung kann nicht gestartet werden aufgrund NullPointerException
- GreoCode android.app.LoadedApk auf 4.0.1
- Mögliche race-condition?
- Android-Ausgabe #25869
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 manadb 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)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, eine weitere Sache, die in der Manifest-Datei, ich bin sicher, Sie haben schon versucht..
Scheint es, wie in Ihrem Projekt, das Sie mehrere PAKETE, wie
com.package.p1 , com.package.p2 ,com.package.p3
..Und ab, während Sie in
p1
und dann bewegt sich aufp2 - p3
...und Sie in dieser Zeit versuchen, es wieder zu laufen..also den Android gibt Ihnen Fehler.
sharedUserId
wie es muss mindestens ein Punkt im Namen, die ich, bemerkt wenn Sie versuchen es jetzt wieder. Mein Projekt ist eigentlich, aufgeteilt in 5 Pakete, die ich werde erklären, mehr in die Tiefe, bei der unteren Frage. Ich habe meine Zweifel daran, obwohl, wenn ich fragte die Frage, die ich abgestreift, die meisten von dem Projekt aus und legen Sie Sie alle in das Projekt, die namespace und es immer noch aufgetreten. Dies ist im Grunde das, was der Ausnahme in der android-code ist beschweren sich über jedoch.Wenn Sie
13
in IhremminSdkVersion
sollte es funktionieren.Entweder das, oder Sie brauchen, um
setDisplayHomeAsUpEnabled(false)
imonCreate()
Ihrer anderen Aktivitäten.Beide Lösungen sollten funktionieren.
Ab API-Level 14 nach der Dokumentation, die
setHomeButtonEnabled(true)
wird nicht mehr getan für Sie standardmäßig, und es geht auf zu sagen, dassSo können wir ableiten, dass
setDisplayHomeAsUpEnabled(false)
arbeitet in einer ähnlichen Weise wiesetHomeButtonEnabled(false)
ActionBar
hinzufügen derDISPLAY_HOME_AS_UP
flag, EinstellungsetDisplayHomeAsUpEnabled(false)
.Ich habe noch einige Hoffnungen für die SDK-version, als ich noch nicht habe version 13 heruntergeladen nur noch, so war ich nicht in der Lage, den Gegner etwas weniger als 4.0Wenn ich mich nicht Irre, geschieht dies nur, wenn wir eine Neuinstallation der app aus Eclipse Ausführen->Wie. So dass dies eher unwahrscheinlich ist, wenn ein Benutzer-upgrades durch das Spielen. Dies kann ich sagen, mit zuversicht, da ich habe bemerkt, meine app, auch mit dieser Ausnahme während der Neuinstallation durch Eclipse, aber nichts auf Crittercism.
Um dies zu beheben, arbeitete ich bei der Lösung den Speicherverbrauch meiner app.
bitmap.recycle(); bitmap = null;
in Ihrem onDestroy und vor allem System.exit(0).Android hat eine Menge von hintergrund-und Neuinstallation ist eine abrupte Aufräumen Erwartung von der app. Speicher nicht entfernt, bis die Probleme verursachen können. Diese Ausnahme ist eine jener
internal
lieben. So dont denken, dass es unkompliziert sein.Haben Sie nicht die Zeit, um die Namen Ihrer Aktivitäten im manifest
android:name
Attribute. Vielleicht verursacht dies das problem.Warten Sie nach Ihrer Anwendung stürzt ab, wenn u führen Sie es ein zweites mal. Die app startet nach dem Absturz wieder. Dies geschieht manchmal mit mir. Wenn das gleiche ist der Fall mit u vergessen Sie nicht, reinigen Sie Ihr Projekt jedesmal vor u starten Sie es.
Durch Einsicht in Ihre code-ich glaube, Sie sind das überspringen festlegen
"setContentView(rid)"
imLoadDiagramActivity
. Bitte versuchen Sie die Ansicht inonCreate()
.Hoffe, dies wird Ihnen helfen.
Müssen Sie " Anhängen "." vor der
activity
Namen inMenifest
.Wie diese
Ich ein update Ihrer menifest Aktivität. Bitte überprüfen Sie es...
Es ist nichts falsch mit dem code, den Sie gegeben haben, uns so weit. Ich habe gerade versucht es in einem neuen Projekt mit dem Namen des Pakets com.test und es funktionierte einwandfrei. Das einzige, was ich Hinzugefügt, wurden die Dateien der package-Deklaration. (Und ich habe den load_diagram_menu.xml natürlich.)
Wenn möglich, wäre es toll, wenn könnten Sie geben uns Zugriff auf das komplette Projekt. Wenn das Projekt auf einem anderen computer, ist es wahrscheinlich Eclipse bzw. das Android-Eclipse-Plug-in, die sich schlecht benehmen. Eine saubere Installation von Eclipse würde das lösen. (Obwohl ich verstehe, wie gerade offline, könnte dies jedoch schwierig. 🙂 )
Für diese, sicher sein, dass die "Automatisch Erstellen" aktiviert ist, wenn die Reinigung das Projekt. (Projekt -> Automatisch Erstellen)