0

ここで何が起こっているのかわかりません。エントリとentryValuesが正しく設定されたListPreferenceがあります。

優先アクティビティに移動して値を変更すると、正常に機能します(テストするオプションを変更した後、値を出力するためにトーストを追加しました)。

しかし、以下を比較して行うと、毎回変更すると常にelseステートメントが実行されます。上記のように、ListPreferenceを変更し、値が「bluesky」の場合でも、正しいifステートメントを実行できませんでした。

onResume()でListPreferenceの値をチェックするために使用するコードは次のとおりです。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this)
String backgroundPref = prefs.getString("backgroundPref", "");

  if(backgroundPref == "bluesky"){
    mainLayout.setBackgroundResource(R.drawable.bluesky); 
    Toast.makeText(getBaseContext(), "Blue Sky", Toast.LENGTH_SHORT).show();
  }else if(backgroundPref == "sky"){
    mainLayout.setBackgroundResource(R.drawable.sky);   
    Toast.makeText(getBaseContext(), "Sky", Toast.LENGTH_SHORT).show();
  }else{
    mainLayout.setBackgroundResource(R.drawable.sunsetscene);
    Toast.makeText(getBaseContext(), "Sunset Scene", Toast.LENGTH_SHORT).show();
  }

トーストがそこにあるので、どのステートメントが実行されるかを再確認できますが、それは常に他のステートメントのようです。

私は悪い日を過ごしていて、何かがおかしいのですか?

4

1 に答える 1

1

手始めに、このような文字列を比較しないbackgroundPref == "bluesky" でくださいbackgroundPref.equals("bluesky");

于 2010-10-12T21:24:30.167 に答える