мое приложение работает только в фоновом режиме. В качестве активности у меня есть только настройки, и после нажатия кнопки «Пуск» вызывается служба, и активность завершается. Для этого я использую MainActivity, который вызывает PreferenceFragment:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MainSettingsFragment()).commit();
}
Чтобы запустить Сервис или выйти из активности, я создал меню
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_settings, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_exit:
finish();
break;
case R.id.action_start:
Intent intentService = new Intent(MainSettingsActivity.this, ReminderService.class);
startService(intentService);
finish();
break;
return true;
}
Это мой очень простой PreferenceFragment, используемый для отображения settings_layout
public class MainSettingsFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings_layout);
}
}
В settings_layout также определены два пункта Preference: Start и Exit.
Я хотел бы переместить функции Start и Exit, размещенные в меню, как элемент в макете. В XML-файле легко создать намерение, позволяющее запустить службу, но я не знаю, как закрыть действие. Как я могу реализовать функцию finish() внутри Activity (кто вызывает PreferenceFragment), чтобы убить себя? Как я могу получить событие «Нажмите Exit» внутри Activity? Получения события внутри PreferenceFragment достаточно для реализации слушателя, например:
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPref, String key) {
Preference pref = findPreference(key);
/* Do something */
}
}
но после этого я понятия не имею, как закрыть активность. Есть идеи? Большое спасибо!