Fix ControllerPreference's index not being passed to Activity

A bug caused by not passing the index argument to `ControllerActivity` led to all preferences opening the activity that pertained to Controller #1. This was fixed by passing the `index` argument in the activity launch intent.
This commit is contained in:
PixelyIon 2022-01-10 20:50:49 +05:30
parent 270ee4a7a6
commit 2c46709064
2 changed files with 10 additions and 2 deletions

View File

@ -25,6 +25,10 @@ class ControllerPreference @JvmOverloads constructor(context : Context, attrs :
notifyChanged()
}
companion object {
const val INDEX_ARG = "index"
}
/**
* The index of the controller this preference manages
*/
@ -36,7 +40,7 @@ class ControllerPreference @JvmOverloads constructor(context : Context, attrs :
for (i in 0 until attrs!!.attributeCount) {
val attr = attrs.getAttributeName(i)
if (attr.equals("index", ignoreCase = true)) {
if (attr.equals(INDEX_ARG)) {
index = attrs.getAttributeValue(i).toInt()
break
}
@ -55,5 +59,5 @@ class ControllerPreference @JvmOverloads constructor(context : Context, attrs :
/**
* This launches [ControllerActivity] on click to configure the controller
*/
override fun onClick() = controllerCallback.launch(Intent(context, ControllerActivity::class.java))
override fun onClick() = controllerCallback.launch(Intent(context, ControllerActivity::class.java).putExtra(INDEX_ARG, index))
}

View File

@ -28,4 +28,8 @@
<!-- A URL to the library -->
<attr format="string" name="libraryUrl"/>
</declare-styleable>
<declare-styleable name="ControllerPreference">
<!-- Index of the controller the preference corresponds to -->
<attr name="index" format="integer" />
</declare-styleable>
</resources>