9

W moim pliku preferencji pójdę toaktywny start z ekranu preferencji (intent zdefiniowane w pliku XML)

<PreferenceCategory android:title="Title" > 
     <Preference android:title="title" > 
    <intent android:action="com.my.package.MainActivity" 
      /> 
</Preference> 
    </PreferenceCategory> 

Aktywność utworzony w pliku manifestu, ale wciąż

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity } 

Jak czy mogę rozpocząć aktywność z ekranu preferencji?

+0

Czy Twoja aktywność rozciągają [PreferenceActivity] (http://developer.android.com/reference/android/preference/PreferenceActivity.html)? –

+0

Tak, przedłużam PreferenceActivity – Lukap

Odpowiedz

4

To nie jest właściwy sposób na rozpoczęcie zamiaru z xml. Pole "Android: akcja" nie jest nazwą działania, które próbujesz uruchomić; opisuje działanie dla filtra zamiaru (takiego jak android.intent.action.VIEW lub android.intent.action.EDIT), który może dostarczyć inna aktywność.

Zobacz tę odpowiedź dla prawidłowego stosowania <intent> Android: akcji, etc: https://stackoverflow.com/a/3751306/582004

Upewnij się, że w swojej AndroidManifest.xml Twoja aktywność zawiera <intent-filter> z <action> że żądasz w twoja PreferenceActivity (w odpowiedzi na to, jest to android.intent.action.VIEW).

27

Miałem ten sam problem, ale żadne z rozwiązań szukanych na stackoverflow nie rozwiązało mojego działania nota Wyjątek.

Oto roztwór roboczy znalazłem z here:

<PreferenceScreen 
       android:title="@string/title_intent_preference" 
       android:summary="@string/summary_intent_preference"> 

      <intent android:action="your.action.string"/> 

</PreferenceScreen> 

ustawić filtr woli w swojej działalności wewnątrz manifest.xml

<activity ...> 
      <intent-filter> 
       <action android:name="your.action.string"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
</activity> 
+1

Dzięki! to też mi pomogło. –

+1

Dzięki, to działa dla mnie. – Jonas

5

W swoim manifeście:

To definicja twojej aktywności zwana [twój pakiet] .MainActivity.

<activity android:name=".MainActivity"> 
<intent-filter> 
     <action android:name="example.action.ACTION_MAIN_ACTIVITY" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
</activity> 

Również, spróbuj użyć PreferenceScreen:

<PreferenceScreen android:title="@string/my_location_settings"> 
    <intent android:action="example.action.ACTION_MAIN_ACTIVITY"> 
    </intent> 
</PreferenceScreen> 

wiecej informacji proszę zobaczyć ten link ... starting an activity from preferences.xml

3

spróbować

<intent android:targetPackage="your.package" 
android:targetClass="your.package.yourMainClassName"/> 
0

Trzeba coś zrobić tak jak w deklaracji zamiaru wewnątrz preferencji xml:

<intent android:targetPackage="abc.def.efg" 
android:targetClass="abc.def.efg.hig.yourClassName"/> 

Uwaga:targetPackage powinna być taka sama jak właściwość package zadeklarowane wewnątrz manifest tagu AndroidManifest.xml. Czasami jest to mylące, więc przeczytaj to jeszcze raz.

Więc równowartość AndroidManifest.xml musiałby deklarację takiego:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="abc.def.efg"> 
<application> 
    .... 
    <activity android:name=".hig.yourClassName"/> 
</application> 
</manifest> 
Powiązane problemy