2017-05-27 2 views
0

Ich bin ein Anfänger und ich versuche, diese Shared Preferences Methode mit booleschen Werten in den Griff zu bekommen. Eine Taste dient zum Ändern des Werts und die zweite zum Lesen. Aber es sagt, dass es eine Voraussetzung für eine (string, int) gibt und ich kann nicht herausfinden, wo ich meinen Fehler gemacht habe. Kannst du bitte helfen?Gemeinsame Vorlieben Boolean

public class MainActivity extends AppCompatActivity { 

SharedPreferences preference; 
SharedPreferences.Editor editor; 
Button btn; 
Button btn2; 
Context context; 
Boolean glowa; 

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

    btn2 = (Button) findViewById(R.id.btn2); 
    btn = (Button) findViewById(R.id.btn); 

    SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this); 
    boolean glowa = preference.getBoolean("GLOWA", false); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      editor.putBoolean("GLOWA", true); 
      editor.apply(); 

     } 
    }); 

    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences preference; 
      SharedPreferences.Editor editor; 
      preference = getBaseContext().getSharedPreferences("GLOWA"); 
      if (glowa == true) { 
       Toast.makeText(MainActivity.this, "true", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(MainActivity.this, "mistake", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
} 
} 
+0

Klingt wie Sie liefern nicht die richtige Eingabe für eine Ihrer Funktionen. Bitte posten Sie Ihre vollständige Fehlermeldung. Sie müssen herausfinden, welche Funktion ein Problem hat, und bestimmen, welcher erforderliche Wert fehlt. –

Antwort

0

Ändern Sie diese

preference = getBaseContext().getSharedPreferences("GLOWA"); 

zu

SharedPreferences sharedpreferences = getSharedPreferences("GLOWA", Context.MODE_PRIVATE); 
sharedpreferences.getBoolean("GLOWA",false); // return false if key not found in preference file 

SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putBoolean("GLOWA", true); 
editor.commit();  

Ihre gewünschten Einstellungen Dateinamen als Schlüssel eines boolean gleich ist. Es ist besser, zwei verschiedene Namen zu wählen.

0

Um von SharedPreferences verwenden Sie den Code unten zu holen:

SharedPreference sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
sharedPreferences.getBoolean("key",false); 

Zum Speichern von Daten in SharedPreferences den Code unten verwenden:

SharedPreference sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putBoolean("key", true); 
editor.apply(); 
0

ich Ihre Klasse und sharedpreferences Initialisierung beheben. Ich hoffe, dass dies Ihr Problem zu lösen boolean von sharedreference

public class MainActivity extends AppCompatActivity { 

    SharedPreferences preference; 
    SharedPreferences.Editor editor; 
    Button btn; 
    Button btn2; 
    Context context; 
    Boolean glowa; 

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

     btn2 = (Button) findViewById(R.id.btn2); 
     btn = (Button) findViewById(R.id.btn); 

     preference = this.getSharedPreferences("myAppPrefs", Context.MODE_PRIVATE); 
     editor = sharedpreferences.edit(); 

     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       editor.putBoolean("GLOWA", true); 
       editor.apply(); 

      } 
     }); 

     btn2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (preference.getBoolean("GLOWA",false)) { 
        Toast.makeText(MainActivity.this, "true", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(MainActivity.this, "mistake", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 
} 
+0

Fehler: (34, 22) Fehler: Keine geeignete Methode gefunden für getSharedPreferences (int) Methode Context.getSharedPreferences (String, int) ist nicht anwendbar (tatsächliche und formale Argumentlisten unterscheiden sich in der Länge) Methode ContextWrapper.getSharedPreferences (String , int) ist nicht anwendbar (tatsächliche und formale Argumentlisten unterscheiden sich in der Länge) Ich habe etwas wie folgt :( – Lordz

+0

'PreferenceManager.getDefaultSharedPreferences (this);' oder 'this.getSharedPreferences (" myAppPrefs, Context.MODE_PRIVATE); ' – ZeroOne

Verwandte Themen