2017-05-27 20 views
0

私は初心者です。ブール値を使用してこの共有環境設定メソッドを把握しようとしています。 1つのボタンは値を変更し、2つ目はそれを読み取ることです。しかし、それは、(文字列、int)の要件があると私はどこで私の間違いをしたのか分からないと言います。助けてもらえますか?共有設定ブール

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

正しい入力をあなたの関数の1つに渡していないようです。完全なエラーメッセージを投稿してください。どの機能が問題を抱えているかを調べ、欠落している必要な値を判断する必要があります。 –

答えて

0

変更この

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

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();  

にご希望の設定ファイル名はboolean型のキーと同じです。 2つの異なる名前を選ぶ方が良いです。私はあなたのクラスとsharedpreferences初期化を修正

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

は、以下のコードを使用します。私はこれがあなたの問題を解決してsharedpreferenceからブール値を取得することを願っています。

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

:以下のコードを使用しSharedPreferencesにデータを格納するために

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

:SharedPreferencesからフェッチする

+0

エラー:(34,22)エラー:getSharedPreferences(int) メソッドの適切なメソッドが見つかりません (実際の引数リストと長形式の引数リストの長さが異なります) メソッドContextWrapper.getSharedPreferences(String 、int)は適用されません (実引数と仮引数の長さが異なります)このようなものがあります:( – Lordz

+0

'PreferenceManager.getDefaultSharedPreferences(this);'または 'this.getSharedPreferences(" myAppPrefs "、Context.MODE_PRIVATE);' – ZeroOne