0

我编写了一个应用程序,不断删除我的共同偏好。我一直认为,当您使用 SharedPreferences 时,它们会一直存在,直到您卸载应用程序或以编程方式清除首选项(我可能是错的)。发生的事情是我在一个文件中有一个 sharedpreference 的字符串值。然后在单独的文件中调用该值,该文件运行 if 语句并将图像视图设置为特定图形(如果已存储该变量)。它似乎运行良好,一切正常,直到我关闭应用程序并在手机设置中杀死它或使用“高级任务杀手”应用程序。我以相同的方式使用共享首选项对其他应用程序进行了编程(不使用 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); }
4

1 回答 1

0

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

if (aquamanticker == aman ){

试试这种方式:

if (aquamanticker.equalsIgnoreCase(aman) ){

原因:

您正在比较两个String被调用的对象aquamanticker,而aman不是比较String变量所包含的内容。

于 2012-07-01T23:53:40.963 回答