2017-05-06 91 views
0

考慮以下活動:如何在PreferenceActivity中創建PreferenceScreen?

public class SettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     PreferenceScreen screen = 
       getPreferenceManager().createPreferenceScreen(this); 
    } 
}

Android Studio中顯示了呼叫getPreferenceManager()警告:

'getPreferenceManager()' 已過時

在使用過時的代碼,該檢驗報告在指定的檢查範圍內。

然而,這並不說明我應該採取什麼樣的糾正措施,以避免該警告。我找不到任何替代方法來獲取對PreferenceManager的引用,我看不到任何其他方式創建PreferenceScreen

我的目標是以編程方式填充PreferenceActivity的首選項及其默認值,因爲它們是在運行時生成的,不能包含在xml/preferences.xml中。

+0

設置不使用PreferenceFragment來表示PreferenceScreen。你可以按照[教程](https://developer.android.com/guide/topics/ui/settings.html) –

回答

2

儘管getPreferenceManager()已在SettingsActivity中棄用,但不會在PreferenceFragment中棄用。因此,建立一個PreferenceScreen正確的方法是如下:

public class SettingsActivity extends PreferenceActivity { 

    public static class SettingsFragment extends PreferenceFragment { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      PreferenceScreen screen = 
        getPreferenceManager().createPreferenceScreen(getActivity()); 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getFragmentManager() 
       .beginTransaction() 
       .replace(android.R.id.content, new SettingsFragment()) 
       .commit(); 
    } 
} 
相關問題