2017-05-27 50 views
0

我是初学者,我试图用布尔值来掌握这个共享首选项方法。一个按钮是更改值,第二个是读取它。但它说有一个(字符串,整数)的要求,我不知道我犯了什么错误。能否请你帮忙?共享首选项布尔型

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

听起来像你没有提供正确的输入到你的一个函数。请发布完整的错误消息。你需要找出哪个函数有问题,并确定缺少什么值。 –

回答

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

你所需的首选项文件名是相同的布尔的关键。最好选择两个不同的名字。

0

从SharedPreferences取出使用下面的代码:

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

要存储在SharedPreferences数据使用下面的代码:

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

我解决您的等级和sharedpreferences初始化。我希望这解决了你的问题,从共享偏好获取布尔值

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

错误:(34,22)错误:找不到适合的方法getSharedPreferences(int) 方法Context.getSharedPreferences(String,int)不适用 (实际和正式参数列表长度不同) 方法ContextWrapper.getSharedPreferences(String ,int)不适用 (实际和正式参数列表的长度不同)我有这样的东西:( – Lordz

+0

'PreferenceManager.getDefaultSharedPreferences(this);'或'this.getSharedPreferences(“myAppPrefs”,Context.MODE_PRIVATE);' – ZeroOne