如何在单击时更改图标并保持不变,直到用户在 android studio 中再次单击

How to change icon when clicked and stay unchanged until clicked again by user in android studio

我目前正在创建一个在 android 工作室中包含音乐的应用程序。所以我在设置菜单上创建了一个音乐图标,当它被点击时它应该静音或删除音乐。所以这就是问题所在,当我单击音乐图标时,它会变为静音音乐图标,但是当我离开设置菜单并再次进入设置菜单时,所谓的静音图标 returns 变为正常音乐图标。我不知道为什么它会变回原来的图标。它应该被静音,当用户再次点击它时它应该被取消静音。我是 android 开发的新手,所以我仍然不知道这类东西。

这是我的音乐和声音设置代码:

 public void showSettings(View v){
    TextView exitTxt;
    LinearLayout music,sound;
    Button quitBtn;
    ImageView soundIC, musicIC;
    settingsMenu.setContentView(R.layout.activity_settings);
    settingsMenu.setCancelable(false);
    exitTxt = settingsMenu.findViewById(R.id.exitBtn);
    music = settingsMenu.findViewById(R.id.music);
    sound = settingsMenu.findViewById(R.id.sound);
    soundIC = settingsMenu.findViewById(R.id.soundOnIC);
    musicIC = settingsMenu.findViewById(R.id.musicOnIC);

    exitTxt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            settingsMenu.dismiss();
        }
    });
    music.setOnClickListener(new View.OnClickListener() {
        boolean isClicked = false;
        @Override
        public void onClick(View v) {
            if(!isClicked) {
                musicIC.setImageResource(R.drawable.ic_music_off);
                music.setBackgroundResource(R.drawable.outline_clicked);
                isClicked = true;
            }
            else{
                music.setBackgroundResource(R.drawable.outline);
                musicIC.setImageResource(R.drawable.ic_music);
                isClicked = false;
            }
        }
    });
    sound.setOnClickListener(new View.OnClickListener() {
        boolean isClicked;
        @Override
        public void onClick(View v) {
            if(!isClicked) {
                soundIC.setImageResource(R.drawable.ic_sound_off);
                isClicked = true;
            }
            else{
                soundIC.setImageResource(R.drawable.ic_sound);
                isClicked = false;
            }
        }
    });
    settingsMenu.show();
}

您必须将设置信息保存在某处。

简单的方法就是使用共享首选项,这是我使用的代码

public class Preferences {
    SharedPreferences preferences;

    public Preferences(Context context){
        preferences = PreferenceManager.getDefaultSharedPreferences(context);
    }

    public void StorePreference(String Field,String Value){
        if(preferences!=null){
            SharedPreferences.Editor editor = preferences.edit();
            if(editor!=null){
                editor.putString(Field,Value);
                editor.apply();
            }
        }
    }

    public String ReadPreference(String Field){
        String returnData=null;
        if(preferences!=null){
            returnData=preferences.getString(Field,"");
        }
        return returnData;
    }

    public boolean ExistsPreference(String Field){
        boolean returnData=false;
        if(preferences!=null){
            returnData=preferences.contains(Field);
        }
        return returnData;
    }
}

将首选项作为静态添加到扩展应用程序的文件中。

然后使用Preferences.StorePreference(字段名称,值)保存数据。

要从首选项中读取,请使用 Preferences.ReadPreference(您的字段名称)。

其他保存数据的方法可以看这里https://developer.android.com/training/data-storage#pref