2011-11-12 14 views
19

Ho un progetto Android con diversi pacchetti. La struttura dei pacchetti in questo caso è com.WAPP.SetLocation è il pacchetto che contiene l'attività che voglio eseguire.Errore Android "impossibile trovare la classe di attività esplicita"

Nel mio manifesto, com.WAPP è considerato il pacchetto di base:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.WAPP" 
     android:versionCode="1" 
     android:versionName="1.0"> 

Le mie attività sono dichiarati nel mio manifestano come:

<activity android:name=".mainScreenActivity"></activity> 
<activity android:name=".SetLocation.setLocationActivity"></activity> 

L'attività mainScreen mostra bene, dal momento che è dentro il pacchetto com.WAPP. Ma quando provo a eseguire setLocationActivity, ottengo l'incapacità di trovare un errore di classe esplicito. Ecco come ho i parametri di intenti:

Intent i = new Intent(); 
      i.setClassName("com.WAPP.SetLocation", 
          "com.WAPP.SetLocation.setLocationActivity"); 
      startActivity(i); 

risposta

1

Se non mi sbaglio, il i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity"); dovrebbe essere i.setClassName(getBaseContext(),"setLocationActivity");Reference

provare anche questa sintassi:

startActivity(new Intent(MyActivity.this, setLocationActivity.class)); 

e provare a rimuovere la partenza punto da:

<activity android:name=".SetLocation.setLocationActivity"></activity> 
24

Il primo parametro è pacchetto applicazione non il pacchetto in cui si trova l'attività.

È possibile richiamare l'attività in questo modo.

È preferibile che SYLARRR suggerisca che Android lo riconosca automaticamente. Da qui la chiamata come ..

startActivity(new Intent(this, setLocationActivity.class)); 

E 'raccomandato per gli standard Java per avere il nome del pacchetto all-carter inferiore e il nome della classe come in CamelCase.

2

farlo in questo modo:

Intent intent = new Intent(); 
intent.setComponent(
     new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity")); 
startActivity(i); 
12

Se la nuova attività non nello stesso pacchetto con MainActivity (si chiama da qui?), Provare a dichiarare il manifesto

<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity> 

e nel chiamante

Intent intent = new Intent(this, setLocationActivity.class); 
startActivity(intent); 

Spero che questo aiuti!

7

In aggiunta alle risposte di cui sopra assicurarsi che le attività sono dichiarate all'interno dell'applicazione in palese

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:supportsRtl="true"> 

    <activity android:name=".mainScreenActivity"></activity> 
    <activity android:name=".SetLocation.setLocationActivity"></activity> 

</application> 
0

nel manifesto si dichiararono come .SetLoction.setLocationActivity ma il nome del pacchetto è com.WAPP .SetLocation quindi è necessario prefisso di nuovo.

Intent i = new Intent(); 
      i.setClassName("com.WAPP.SetLocation", 
          "com.WAPP.SetLocation.SetLocation.setLocationActivity"); 
      startActivity(i); 
Problemi correlati