2016-03-13 7 views
0

Я хочу запустить фоновое обслуживание из моего PreferenceFragment. Для того, чтобы добиться того, что я создал первый службы:Начать работу с PreferenceFragment

public class MyService extends IntentService { 

    private static final String TAG = makeLogTag(MyService.class); 

    public MyService() { 
     super(TAG); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     Toast.makeText(this, "It's working", Toast.LENGTH_SHORT).show(); 
    } 
} 

Затем я добавил предпочтение, которое должно начать намерение:

<PreferenceScreen 
     android:title="@string/my_preference"> 
     <intent android:action="MY_SERVICE"/> 
</PreferenceScreen> 

И, конечно, я добавил специальный атрибут AndroidManifest.xml

<service 
     android:name=".MyService" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="MY_SERVICE"/> 
     </intent-filter> 
</service> 

ВОПРОС

К сожалению, у меня появляется ошибка, из-за которой не удалось найти действие с act = "MY_SERVICE". Я понимаю, что с Activity нет проблем, но как начать обслуживание?

+0

тег используется для запуска в 'Activity', не' 'обслуживания – pskink

+0

я заметил, что, но как начать службу? –

+0

от этого 'Активность'? – pskink

ответ

3

Намерение на экране предпочтения начинается с startActivity(),, но вам нужно сделать это с помощью startService().

Вы должны сделать Ваше предпочтение XML, как этот

<PreferenceScreen 
     android:key="pref_open_service_key" 
     android:title="@string/my_preference"> 
</PreferenceScreen> 

и запустить службу внутри кода.

Preference myPref = (Preference) findPreference("pref_open_service_key"); 
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
    public boolean onPreferenceClick(Preference preference) { 
     Intent intent = new Intent(PreferenceActivity.this, MyService.class); 
     startService(intent); 
    } 
}); 
+0

Итак, как это сделать? –

+0

Это лучшее решение? Я проверю ответ, как принято в течение нескольких минут. –

+0

Я думаю, что они не сделали никаких других ярлыков. –