Frage

Ich fand ein paar Threads, die ein ähnliches Problem meldeten, aber aber keines von denen bietet wirklich etwas, das ich noch nicht ausprobiert habe.

Ein unschuldiger solcher Anruf:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

mit dem folgenden in AndroidManifest.xml:

 <application>
    <activity android:name="MyActivityLib" />
    <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
    </activity>
 </application>

Löst die folgende Ausnahme aus:

06-14 14:06:50.297: ERROR/AndroidRuntime(9272): 
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences};
have you declared this activity in your AndroidManifest.xml?

Die Dinge sind, dieser Code arbeitete früher einwandfrei, bevor ich ihn von einem monolithischen Anwendungsprojekt zu einem zweiteiligen Projekt geändert habe, das aus einem Bibliotheksprojekt und einem Anwendungsprojekt besteht.

Das Androidmanifest.xml ist der in der Bibliothek Projekt.

Was muss ich tun, um das zu beseitigen ActivityNotFoundException?

War es hilfreich?

Lösung

Ich habe gerade das Problem gelöst.

Alles was ich tun musste war die FQN zum FQN hinzuzufügen Anwendung Projekts AndroidManifest.xml:

<activity android:name="com.example.baseapp.MyEditPreferences"
          android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>

In der Tat habe ich jeden Hinweis auf den Verweis aufgenommen MyEditPreferences in dem Bibliothek Projekts AndroidManifest.xml Ganz und es funktioniert immer noch.

Es funktioniert auch mit der ursprünglichen StartActivity 1-Line-Anweisung:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

Schlussfolgerung: Es ist die Anwendung AndroidManifest.xml Das ist wichtig, nicht die der Bibliothek.

Andere Tipps

Vielleicht funktioniert das?

Intent mIntent = new Intent();
mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences");
mActivity.startActivity(mIntent);

Wenn Sie Klassen verwenden, die in einem Android -Paket (Einstellungen, Einstellungen, Aktivitäten, ...) enthalten sind, müssen Sie Folgendes einsetzen:

Intent i = new Intent(this, <name_of_your_package>.classname.class);

Wenn Sie "name_of_your_package" nicht einsetzen, wird der Compiler der Meinung, dass Sie sich auf die Klasse in Android -Paket (Android.*) Beziehen.

Ich weiß, dass dies ein sehr alter Thread ist, aber ich hatte gerade das gleiche Problem. In meinem Fall musste ich nur einen falschen löschen

import java.util.prefs.Preferences;

Überprüfen Sie einfach Ihr Manifest auf Fehler, auf die Ihre IDE nicht gezeigt hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top