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() notifyChanged()
} }
companion object {
const val INDEX_ARG = "index"
}
/** /**
* The index of the controller this preference manages * 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) { for (i in 0 until attrs!!.attributeCount) {
val attr = attrs.getAttributeName(i) val attr = attrs.getAttributeName(i)
if (attr.equals("index", ignoreCase = true)) { if (attr.equals(INDEX_ARG)) {
index = attrs.getAttributeValue(i).toInt() index = attrs.getAttributeValue(i).toInt()
break break
} }
@ -55,5 +59,5 @@ class ControllerPreference @JvmOverloads constructor(context : Context, attrs :
/** /**
* This launches [ControllerActivity] on click to configure the controller * 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 --> <!-- A URL to the library -->
<attr format="string" name="libraryUrl"/> <attr format="string" name="libraryUrl"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="ControllerPreference">
<!-- Index of the controller the preference corresponds to -->
<attr name="index" format="integer" />
</declare-styleable>
</resources> </resources>