2015-11-13 20 views
6

Sto usando il frammento di sherlock nella scheda ma non riesco ad accedere a sharedpreference o a salvarlo, come posso? questo è il mio codice:Come accedere a sharedpreferences in SherlockFragment

public class SettingsActivity extends SherlockFragment { 

    private CheckBox cb1; 
    private Context context = getActivity(); 
    private SharedPreferences sp; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.settings_layout, container, false); 
     cb1 = (CheckBox)rootView.findViewById(R.id.cb1); 
     sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
      public void onCheckedChanged (CompoundButton cb, boolean isChecked) { 
       if (isChecked) { 
        context.getSharedPreferences("some_pref", Context.MODE_PRIVATE) 
        .edit() 
        .putBoolean("some_bool_name", true) 
        .commit(); 
       } 
      } 
     }); 
     return rootView; 
    } 
} 

Per favore dimmi anche come salvare la preferenza se il metodo sopra non è corretto.

LogCat

11-13 18: 13: 36,907: I/ActivityManager (10626): AVVIO u0 {atto = android.intent.action.MAIN cat = [android.intent.category. LANCIO] flg = 0x10200000 cmp = com.myapp.test/.MainActivity} da pid 10836 11-13 18: 13: 36.907: D/ActivityManager (10626): TopActivityInfo, pkgName: com.myapp.test activityName: com.myapp .test.MainActivity bstSpecialAppKeyboardHandlingEnabled = false 11-13 18: 13: 36.907: D/GuidanceScreen (10824): appName: La mia app, currentPkg: com.myapp.test, evento: app_launch, controller: Tastiera 11-13 18: 13: 36.907: D/ActivityManager (1 0626): Visualizzazione della guida per pkgName: com.myapp.test 11-13 18: 13: 36.917: D/GuidanceScreen (10824): appName: La mia app 11-13 18: 13: 36.987: D/GuidanceScreen (10824) : nessuna guida per com.myapp.test. 11-13 18: 13: 37.037: D/WindowManager (10626): invio di richiesta appClickStats con dati: [pacchetto = com.myapp.test, appname = Mia App, appver = 1.0, clickloc = system_server] 11-13 18 : 13: 37.237: I/ActivityManager (10626): visualizzato com.myapp.test/.MainActivity: + 260 ms 11-13 18: 13: 46.227: D/AndroidRuntime (15464): procName da cmdline: com.myapp.test 11-13 18: 13: 46.227: E/AndroidRuntime (15464): in writeCrashedAppName, pkgName: com.myapp.test 11-13 18: 13: 46.227: D/AndroidRuntime (15464): file scritto correttamente con contenuto: com.myapp.test StringBuffer:; com.myapp.test 11-13 18: 13: 46.237: E/AndroidRuntime (15464): Processo: com.myapp.test, PID: 15464 11-13 18: 13: 46.237 : E/AndroidRuntime (15464): su com.myapp.test.SettingsActivity.onCreateView (SettingsActivity.java:40) 11-13 18: 13: 46.267: I/ActivityManager (10626): Il processo com.myapp.test (pid 15464) è morto. 11-13 18: 13: 46.267: W/ActivityManager (10626): Forza la rimozione di ActivityRecord {4b12da0c u0 com.myapp.test/.MainActivity t17}: l'app è morta, nessuno stato salvato 11-13 18: 13: 46.287: I/WindowState (10626): WIN MORTE: finestra {4b1ac890 u0 com.myapp.test/com.myapp.test.MainActivity}

+0

Qual è problema? Hai un errore? O i dati non vengono salvati? – walkmn

+0

forza chiude l'app. quando provo ad accedere a SP come quello –

+0

per favore mostra logcat – walkmn

risposta

0

inizializzazione condiviso preferenze:

private SharedPreferences loginPreferences; 
private SharedPreferences.Editor loginPrefsEditor; 

All'interno onCreateView():

loginPreferences = getActivity().getSharedPreferences("loginPrefs", getActivity().MODE_PRIVATE); 
loginPrefsEditor = loginPreferences.edit(); 

Risparmi:

loginPrefsEditor.putString("start_time", yourText); 
loginPrefsEditor.commit(); 

Recupera:

String dateString = loginPreferences.getString("start_time", ""); 
+0

Guarda il logcat nella domanda! –