0

SharedPerferences と、ImageButton (Dragon) がクリックまたはアンクリックされたときの状態の保存について、助けが必要です。

ImageButton がクリックされていない場合は R.drawable.normal (false) であり、ユーザーが ImageButton をクリックした場合は R.drawable.clicked (true) である必要があります。

アプリを終了して開くと、 ImageButton drawable.clicked 画像が保持されます。これがブール値、文字列、または setImageURI であるかどうかを判断するためにオンラインで探していましたが、答えが見つかりませんでした。

誰かがこのSharePerferencesの正しい方法について私にアドバイスし、修正するか、正しいロジックの例を挙げてもらえますか?

助けていただければ幸いです。以下のコードをご覧ください。

public class Main extends Activity {
ImageButton Dragon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final Dragon = (ImageButton) findViewById(R.id.imageButton1);

    loadPrefs();

    Dragon.setOnClickListener (new OnClickListener() {

            public void onClick(View v) {

                savePrefs("IMGBOX", Dragon.isSelected());

                if (Dragon.isSelected()){
                    Dragon.setSelected(false);

                    Dragon.setImageResource(R.drawable.clicked);

                } else { 

                    Dragon.setImageResource(R.drawable.normal);
                    Dragon.setSelected(true);
                }    
        }
}
);
}



private void loadPrefs(){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        boolean imgValue = sp.getBoolean("IMGBOX", false);

      if (imgValue){
          Dragon.setSelected(true);
      }else{
          Dragon.setSelected(false);
      }   
      }  
 private void savePrefs(String key, boolean value){

 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
         Editor edit = sp.edit();
         edit.putBoolean(key, value);
         edit.commit(); 
 }
 }

更新: state_checked の 2 つの状態 (false/true) を持つセレクターであるブール値として ToggleButton を使用して機能していることを確認できました。マキシム・エフィモフの支援に感謝します!

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_clicked"
      android:state_checked="true" />
<item android:drawable="@drawable/image_notclicked"
    android:state_checked="false"/>

 </selector>
4

1 に答える 1