SharedPreferences不断删除

时间:2012-07-01 23:41:51

标签: android

我写了一个不断删除共享偏好的应用程序。总是我的理解是,当你使用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); }

1 个答案:

答案 0 :(得分:0)

第二个文件中的那一行看起来很糟糕!

if (aquamanticker == aman ){

以这种方式尝试:

if (aquamanticker.equalsIgnoreCase(aman) ){

原因:

您正在比较两个名为Stringaquamanticker的{​​{1}}个对象,而不是比较aman变量所包含的内容。