2011-11-12 17 views
19

Mam projekt Androida z kilkoma pakietami. Struktura pakietów w tym przypadku to com.WAPP.SetLocation jest pakietem zawierającym działanie, które chcę uruchomić.Błąd Androida "nie można znaleźć wyraźnej klasy aktywności"

W moim manifeście, com.WAPP jest uważany za pakiet podstawowy:

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

Moje działania są zadeklarowane w moim manifest jako:

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

Aktywność mainScreen wyświetla w porządku, ponieważ jest w środku pakiet com.WAPP. Ale kiedy próbuję uruchomić setLocationActivity, nie mogę znaleźć wyraźnego błędu klasy. Oto jak mam zamiarem parametry:

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

Odpowiedz

1

Jeśli się nie mylę, i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity"); powinny być i.setClassName(getBaseContext(),"setLocationActivity");Reference

Sponsorowane tej składni:

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

i spróbuj usunąć początkowy kropka od:

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

Pierwszy parametr to pakiet aplikacji nie pakiet, w którym jest aktywność.

Możesz wywołać działanie takie jak to.

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

Jest to zalecane, ponieważ SYLARRR zasugerował, aby system Android automatycznie je dla Ciebie wyszukał. Stąd wezwanie jako ..

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

Zaleca za standardami Java, aby mieć nazwę pakietu wszystkim niższym powlekanego oraz nazwę klasy jako camelCased.

2

zrobić to w ten sposób:

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

Jeśli nie nowa działalność w tym samym pakiecie z główną działalność (zadzwonić stąd?), Spróbuj zadeklarować na oczywistym

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

aw dzwoniący

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

Mam nadzieję, że to pomoże!

7

W uzupełnieniem powyższych odpowiedzi upewnij się, że twoje działania są deklarowane wewnątrz aplikacji w jawnym

<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

w swoim manifeście oświadczył pan go jako .SetLoction.setLocationActivity ale nazwa pakietu jest com.WAPP .SetLocation , więc powinieneś jeszcze raz to powtórzyć.

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