1

我的应用程序仅在后台运行。作为活动,我只有设置,按下开始按钮后,调用服务并完成活动。为此,我使用调用 PreferenceFragment 的 MainActivity:

@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。

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

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

但在那之后我不知道如何关闭活动。任何想法?非常感谢!

4

1 回答 1

3

如果我说得对,您想从片段中关闭活动吗?为什么不在片段中使用 getActivity() 然后调用 finish()?

于 2014-10-14T09:06:17.347 回答