我写了一个不断删除共享偏好的应用程序。总是我的理解是,当你使用SharedPreferences时,它们会持续存在,直到你卸载应用程序或以编程方式清除首选项(我可能是错的)。发生的事情是我在一个文件中有共享首选项的字符串值。然后在运行if语句的单独文件中调用该值,并在存储该变量时将imageview设置为特定图形。它似乎运行良好,一切都像它应该工作,直到我关闭应用程序并在手机设置中杀死它或使用“高级任务杀手”应用程序。我已经使用共享首选项以相同的方式编写了其他应用程序(不使用if语句),我似乎没有这个问题,所以这让我觉得if语句存在问题。从逻辑上讲,我无法弄清楚出了什么问题。任何帮助深表感谢。提交一个代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.guessaquaman);
final Button guessbutton = (Button) findViewById(R.id.guess_button);
guessbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
guess=(EditText)findViewById(R.id.guess_edittext);
String myguess = guess.getText().toString();
String correctanswer = "aquaman";
if( myguess.equals( correctanswer ) ){
Toast.makeText(getApplicationContext(), "Correct", Toast.LENGTH_SHORT).show();
SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("aquamanticked", "on");
editor.commit();
Intent myintent1 = new Intent(AquamanGuess.this,PlayActivity.class);
startActivity(myintent1);
guessbutton.setEnabled(false);
}
}
});
第二个文件:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.play);
SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
String aquamanticker = sharedPreferences.getString("aquamanticked", "");
String aman= "on";
ImageView aquaman = (ImageView) findViewById(R.id.aquaman);
aquaman.setImageResource(R.drawable.aquaman_small_empty);
if (aquamanticker == aman ){
aquaman.setImageResource(R.drawable.aquaman_small_filled); }
答案 0 :(得分:0)
第二个文件中的那一行看起来很糟糕!
if (aquamanticker == aman ){
以这种方式尝试:
if (aquamanticker.equalsIgnoreCase(aman) ){
原因:
您正在比较两个名为String
和aquamanticker
的{{1}}个对象,而不是比较aman
变量所包含的内容。