getSharedPreferences i PreferenceFragment

Diskussion i 'Frågor, support och diskussion' startad av noname.olsson, 9 aug 2012.

  1. noname.olsson

    noname.olsson Teen Droid Medlem

    Blev medlem:
    10 dec 2009
    Inlägg:
    360
    Mottagna gillanden:
    8

    MINA ENHETER

    Tjena!
    Sitter och försöker få PreferencesFragment att fungera. Den sparar och använder sig av ändringarna, men man måste avsluta appen och starta om den för att de ska börja gälla.

    Nu försöker jag följa guiden på developer.android.com och har kommit fram till följande kod:
    Kod:
    package com.wolforandroid.wol;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.preference.PreferenceFragment;
    import android.preference.PreferenceManager;
    
    public class PreferencesFrag extends PreferenceFragment{
    	public static final String PREFS_NAME = "MyPrefsFile";
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Load the preferences from an XML file
            addPreferencesFromResource(R.xml.preferences);
            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        }
        
    	@Override
        public void onStop() {
        	super.onStop();
        	
        	//We need an Editor object to make preference changes
        	//All objects are android.context.Context
        	SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        	SharedPreferences.Editor editor = settings.edit();
        	editor.putBoolean("fullscreen", false);
        	
        	//Commit the edits!
        	editor.commit();
        }
    }
    
    Men på denna rad "SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);" får jag meddelandet: The method getSharedPreferences(String, int) is undefined for the type PreferencesFrag

    Vad är det som jag gör fel? :S
     
  2. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 448
    Mottagna gillanden:
    2 199

    MINA ENHETER

    getActivity().getShared... fungerar finemang.
     
  3. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 349
    Mottagna gillanden:
    835
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    I ditt PreferenceFragment ska du inte hämta och skriva till SharedPreferences själv. Det sker automatiskt. Det är det som är det fina med att använda just den klassen.

    När du sedan ska läsa upp inställningarna i en aktivitet så fungerar getSharedPreferences(PREFS_NAME, 0).

    Testa den här istället:
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
     
    Last edited: 10 aug 2012