Какой файл настроек использует PreferenceFragment для чтения/записи?

Как я могу контролировать, какой файл должен использоваться PreferencesFragment для чтения и записи? Я не могу найти ничего об этом в документах. Если это невозможно контролировать с помощью кода или XML-ресурсов, существуют ли какие-либо гарантии, что вызывается этим файлом, поэтому я могу явно открыть его с помощью

Activity.getSharedPreferences(String name, int mode)

Спасибо.

Ответ 1

Вам нужно управлять PreferenceManager SettingsFragment. Это то, что выглядит как

// Constants
//--------------------------------------------------------------------------
private final static String TAG = SettingsFragment.class.getName();
public final static String SETTINGS_SHARED_PREFERENCES_FILE_NAME = TAG + ".SETTINGS_SHARED_PREFERENCES_FILE_NAME";

// Life-cycle
//--------------------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreate()");

    // Define the settings file to use by this settings fragment
    getPreferenceManager().setSharedPreferencesName(SETTINGS_SHARED_PREFERENCES_FILE_NAME);

    // Load the preferences from an XML resource
    addPreferencesFromResource(R.xml.preferences);
}

Затем вы можете получить доступ к этому файлу настроек за пределами фрагмента, например:

SharedPreferences preferences = getActivity().getSharedPreferences(
        SettingsFragment.SETTINGS_SHARED_PREFERENCES_FILE_NAME,
        Context.MODE_PRIVATE);