簡體   English   中英

Android:從PreferenceFragment關閉活動

[英]Android: Close activity from PreferenceFragment

我的應用程序只在后台運行。 作為活動我只有設置,按下開始按鈕后,調用服務並完成活動。 為此,我使用的是調用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中還定義了兩個首選項:開始和退出。

我想在菜單中移動函數Start和Exit,作為布局中的項目。 在xml文件中創建一個意圖很容易啟動服務,但我不知道如何關閉活動。 如何在Activity(調用PreferenceFragment)中實現finish()函數以殺死她自己? 如何在活動中獲得“按退出”活動? 在PreferenceFragment中獲取事件足以實現一個偵聽器,如:

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

但之后我不知道如何關閉活動。 任何想法? 非常感謝!

如果我認為這是正確的,你想從片段中關閉活動嗎? 為什么不在片段中使用getActivity()然后調用finish()?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM