when i click imagebutton the image change. Can i save this change when i return again in this activity?

66 Views Asked by At

class suspect : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_suspect)
    imagebutton.setOnClickListener {
        imagebutton.setImageResource(R.drawable.picture2)
    }
}

}

2

There are 2 best solutions below

0
JTODR On

You could save an image identifier to Shared Preferences and then retrieve an image number from Shared Preferences when you open your activity. Then you use that number to set the ImageButton image.

I haven't ran this code, but something along the lines of this should work:

private val picture1Id = 1
private val picture2Id = 2
private val IMAGE_KEY = "IMAGE_KEY"

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_suspect)

    imagebutton.setOnClickListener {
        saveImageIdentifier(picture2Id)
        imagebutton.setImageResource(R.drawable.picture2)
    }
    
    setupImageButtonFromPreferences()
}

private fun saveImageIdentifier(id: Int) {
    val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
    with (sharedPref.edit()) {
        putInt(IMAGE_KEY, id)
        apply()
    }
}

private fun getImageIdentifier(): Int {
    val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return 1
    return sharedPref.getInt(IMAGE_KEY, 1)
}

private fun setupImageButtonFromPreferences() {
    when (getImageIdentifier()) {
        picture1Id -> imagebutton.setImageResource(R.drawable.picture1)
        picture2Id -> imagebutton.setImageResource(R.drawable.picture2)
        else -> return
    }
}
0
dimitrios mayrogiannis On
var a = 0

class suspect : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_suspect)

        if (a == 1){imagebutton.setImageResource(R.drawable.picture2)}
        imagebutton.setOnClickListener {
            imagebutton.setImageResource(R.drawable.picture2)
            a = 1
        }
        imagebutton.setOnLongClickListener {
            imagebutton.setImageResource(R.drawable.picture1)
            a = 0
            true
        }
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("image", a)
    }
    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        a = savedInstanceState.getInt("image")
    }
}