Domanda

Ho trovato alcuni thread che segnalano un problema simile ma nessuno di loro Offre davvero qualcosa che non ho già provato.

Un'innocente chiamata tale:

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

Con il seguente Androidmanifest.xml:

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

Innesca la seguente eccezione:

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?

Le cose è che questo codice è stato utilizzato in modo impeccabile prima di cambiarlo da un progetto di applicazione monolitica a un progetto in 2 parti che comprende da un progetto di biblioteca e da un progetto di applicazione.

Androidmanifest.xml è quello in biblioteca progetto.

Di cosa ho bisogno per eliminare questo ActivityNotFoundException?

È stato utile?

Soluzione

Ho appena risolto il problema.

Tutto quello che dovevo fare era aggiungere il FQN al Applicazione Progetto AndroidManifest.xml:

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

In effetti, ho rimosso qualsiasi riferimento a MyEditPreferences nel Biblioteca Progetto AndroidManifest.xml completamente e funziona ancora.

Funziona anche con l'istruzione originale StartActivity 1-line:

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

Conclusione: è l'applicazione AndroidManifest.xml Questo è importante, non di quella della biblioteca.

Altri suggerimenti

Forse questo funzionerà?

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

Se usi classi quali nomi sono inclusi in un pacchetto Android (impostazioni, preferenze, attività, ...), dovrai dirlo:

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

Se non si inserisce "name_of_your_package", il compilatore penserà di fare riferimento alla classe nel pacchetto Android (Android.*).

So che questo è un filo molto vecchio, ma ho appena avuto lo stesso problema. Nel mio caso tutto ciò che dovevo fare era eliminare un spurio

import java.util.prefs.Preferences;

Controlla il tuo manifest per errori che il tuo IDE non ha puntato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top