2017-02-25 4 views
-2

Hier ist das Problem. In meiner zweiten Klasse versuche ich die SharedPreferences zu laden. Im Folgenden werde ich auch meine erste Klasse einschließen.SharedPreferences in einer anderen Aktivität laden

//set label for journal questions 
public TextView journalQuestionLabel; 
public int counter = 0; 
SharedPreferences preferences; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_journal); 

    //TODO: Send saved preferences here 
    preferences = getSharedPreferences("grammarOption", MODE_PRIVATE); 
    int selection = preferences.getInt("grammarOption", -1); 
    Log.d("in onCreate", "preferences = " + selection); 

} 

Wenn ich es teste, druckt mein Debug Log immer -1. Meine gemeinsamen Einstellungen werden nicht geladen. Was mache ich falsch?

Ich habe die anderen Antworten hier und in jedem Tutorial ausprobiert, aber sie funktionieren nicht. Hier ist mein Code zum Einrichten und Speichern meiner Spinnereinstellungen. Ich habe das überprüft und es funktioniert.

private void setupSpinner() { 
    // Create adapter for spinner. The list options are from the String array it will use 
    // the spinner will use the default layout 
    final ArrayAdapter grammarSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array_grammar_options, 
      android.R.layout.simple_spinner_dropdown_item); 

    // Specify dropdown layout style - simple list view with 1 item per line 
    grammarSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 

    //Apply the adapter to the spinner 
    grammarChoiceSpinner.setAdapter(grammarSpinnerAdapter); 

    //Create shared preferences to store the spinner selection 
    SharedPreferences preferences = getApplicationContext().getSharedPreferences 
      ("Selection", MODE_PRIVATE); 

    editor = preferences.edit(); 

    // Create the intent to save the position 
    grammarChoiceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      //receive the string of the option and store it 
      int grammarOptionPosition = grammarChoiceSpinner.getSelectedItemPosition(); 
      //put the string in the editor 
      editor.putInt("grammarOption", grammarOptionPosition); 
      editor.commit(); 
      //make a toast so the user knows if it's not "select" 
      if (grammarOptionPosition != 0) { 
       Toast.makeText(getApplicationContext(), "Choice saved.", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

     // Because AdapterView is an abstract class, onNothingSelected must be defined 
     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      mGrammar = 0; 
     } 
    }); 
} 

Hier in onCreate genannt()

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_opening); 

    //find the spinner to read user input 
    grammarChoiceSpinner = (Spinner) findViewById(R.id.spinner); 

    setupSpinner(); 

Antwort

0

Sie passieren falsch String in getSharedPreferences(String, int).

preferences = getSharedPreferences("Selection", MODE_PRIVATE); 
int selection = preferences.getInt("grammarOption", -1); 
Log.d("in onCreate", "preferences = " + selection); 

Probieren Sie es aus.

Ich hoffe es hilft.

+0

Ja! Solch eine einfache Lösung - das reparierte es danke! – Ang

+0

Glücklich zu helfen: D –

0

Stellen Sie sicher, dass Ihr Schlüssel SharedPreference in der Klasse oder sogar in der gesamten App identisch ist.
Beim Speichern mögen -

SharedPreferences preferences = getSharedPreferences("MY_PREFS", MODE_PRIVATE); 
preferences.edit().putInt("grammerOption", 1).apply(); 


Während die Daten aus Prefs Erste gefällt -

SharedPreferences preferences = getSharedPreferences("MY_PREFS", MODE_PRIVATE); 
int option = preference.getInt("grammerOption", -1); 


PS, Key für Präferenz (die MY_PREFS hier ist) müssen gleich sein .

Verwandte Themen