6.6.2 - Alpha2 - ui.inflate 返回值丢失 attr/on/click 等原型方法的问题

This commit is contained in:
SuperMonster003
2025-02-05 21:07:48 +08:00
parent 7e59981147
commit b6368b403d
2 changed files with 13 additions and 9 deletions

View File

@@ -8,6 +8,7 @@
"ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) _[`issue #298`](http://issues.autojs6.com/298)_",
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
"floaty.window/floaty.rawWindow 无法在子线程执行的问题",
"ui.inflate 返回值丢失 attr/on/click 等原型方法的问题",
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"
],
"improvement": [

View File

@@ -14,6 +14,7 @@ import org.autojs.autojs.core.ui.inflater.InflateContext
import org.autojs.autojs.core.ui.inflater.LayoutInflaterDelegate
import org.autojs.autojs.core.ui.inflater.inflaters.ViewGroupInflater
import org.autojs.autojs.core.ui.inflater.inflaters.ViewInflater
import org.autojs.autojs.core.ui.nativeview.NativeView
import org.autojs.autojs.core.ui.widget.JsListView
import org.autojs.autojs.execution.ScriptExecuteActivity
import org.autojs.autojs.extension.AnyExtensions.isJsNullish
@@ -341,14 +342,14 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
@JvmStatic
@RhinoRuntimeFunctionInterface
fun inflate(scriptRuntime: ScriptRuntime, args: Array<out Any?>): View = ensureArgumentsLengthInRange(args, 1..3) { argList ->
fun inflate(scriptRuntime: ScriptRuntime, args: Array<out Any?>): NativeView = ensureArgumentsLengthInRange(args, 1..3) { argList ->
val (xml, parent, isAttachedToParent) = argList
inflateRhinoRuntime(scriptRuntime, xml, parent, isAttachedToParent)
}
@JvmStatic
@RhinoFunctionBody
fun inflateRhinoRuntime(scriptRuntime: ScriptRuntime, xml: Any?, parent: Any? = null, isAttachedToParent: Any? = false): View {
fun inflateRhinoRuntime(scriptRuntime: ScriptRuntime, xml: Any?, parent: Any? = null, isAttachedToParent: Any? = false): NativeView {
val parentView = parent.jsSanitize()
require(parentView is ViewGroup?) {
"Augment parentView for ui.inflate must be a ViewGroup instead of ${parentView.jsBrief()}"
@@ -359,7 +360,8 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
activity is ScriptExecuteActivity -> activity
else -> throw WrappedIllegalArgumentException("Global activity ${activity.jsBrief()} must be a ScriptExecuteActivity")
}
return scriptRuntime.ui.layoutInflater.inflate(toXMLString(xml), parentView, coerceBoolean(isAttachedToParent, false))
val inflatedView = scriptRuntime.ui.layoutInflater.inflate(toXMLString(xml), parentView, coerceBoolean(isAttachedToParent, false))
return ViewExtras.getNativeView(scriptRuntime.topLevelScope, inflatedView, inflatedView::class.java, scriptRuntime)
}
@JvmStatic
@@ -544,9 +546,9 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
@JvmStatic
@RhinoFunctionBody
fun findByIdRhinoWithRuntime(scriptRuntime: ScriptRuntime, id: String?): View? {
fun findByIdRhinoWithRuntime(scriptRuntime: ScriptRuntime, id: String?): NativeView? {
val view = scriptRuntime.ui.view ?: return null
return findByStringIdRhino(view, id)
return findByStringIdRhinoRuntime(scriptRuntime, view, id)
}
@JvmStatic
@@ -556,19 +558,20 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
require(view is View) { "Argument view for ui.findByStringId must be a View instead of ${view.jsBrief()}" }
when {
id.isJsNullish() -> {
findByStringIdRhino(view, null)
findByStringIdRhinoRuntime(scriptRuntime, view, null)
}
else -> {
// require(id is String) { "Argument id for ui.findByStringId must be a string instead of ${id.jsBrief()}" }
findByStringIdRhino(view, coerceString(id))
findByStringIdRhinoRuntime(scriptRuntime, view, coerceString(id))
}
}
}
@JvmStatic
@RhinoFunctionBody
fun findByStringIdRhino(view: View, id: String?): View? {
return JsViewHelper.findViewByStringId(view, id)
fun findByStringIdRhinoRuntime(scriptRuntime: ScriptRuntime, view: View, id: String?): NativeView? {
val foundView = JsViewHelper.findViewByStringId(view, id) ?: return null
return ViewExtras.getNativeView(scriptRuntime.topLevelScope, foundView, foundView::class.java, scriptRuntime)
}
@JvmStatic