我的应用程序仅在后台运行。
作为活动,我只有“设置”,在按“开始”按钮后,将调用服务并结束活动。
为此,我正在使用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中还定义了两个首选项:开始和退出。

我想将功能开始和退出功能放置在菜单中,作为布局项。
在xml文件中创建意图以启动服务很容易,但是我不知道如何关闭活动。
我如何在Activity(称为PreferenceFragment)内部实现finish()函数以杀死自己?
如何在活动中获取事件“ Press Exit”?
在PreferenceFragment中获取事件足以实现侦听器,例如:

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPref, String key) {
    Preference pref = findPreference(key);
    /* Do something */
    }
}


但是之后我不知道如何结束活动。
任何想法?
非常感谢!

最佳答案

如果我正确无误,您想关闭片段中的活动吗?
为什么不在片段中使用getActivity()然后调用finish()?

关于android - Android:从PreferenceFragment关闭 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26356405/

10-10 10:00