6.6.2 - Alpha2 - ui.inflate 返回值丢失 attr/on/click 等原型方法的问题
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
"ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) _[`issue #298`](http://issues.autojs6.com/298)_",
|
"ScriptRuntime 使用 require 引用内置模块时可能出现的同步状态异常 (试修) _[`issue #298`](http://issues.autojs6.com/298)_",
|
||||||
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
|
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
|
||||||
"floaty.window/floaty.rawWindow 无法在子线程执行的问题",
|
"floaty.window/floaty.rawWindow 无法在子线程执行的问题",
|
||||||
|
"ui.inflate 返回值丢失 attr/on/click 等原型方法的问题",
|
||||||
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"
|
"代码编辑器跳转到行尾时可能跳转到下一行起始位置的问题"
|
||||||
],
|
],
|
||||||
"improvement": [
|
"improvement": [
|
||||||
|
|||||||
@@ -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.LayoutInflaterDelegate
|
||||||
import org.autojs.autojs.core.ui.inflater.inflaters.ViewGroupInflater
|
import org.autojs.autojs.core.ui.inflater.inflaters.ViewGroupInflater
|
||||||
import org.autojs.autojs.core.ui.inflater.inflaters.ViewInflater
|
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.core.ui.widget.JsListView
|
||||||
import org.autojs.autojs.execution.ScriptExecuteActivity
|
import org.autojs.autojs.execution.ScriptExecuteActivity
|
||||||
import org.autojs.autojs.extension.AnyExtensions.isJsNullish
|
import org.autojs.autojs.extension.AnyExtensions.isJsNullish
|
||||||
@@ -341,14 +342,14 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@RhinoRuntimeFunctionInterface
|
@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
|
val (xml, parent, isAttachedToParent) = argList
|
||||||
inflateRhinoRuntime(scriptRuntime, xml, parent, isAttachedToParent)
|
inflateRhinoRuntime(scriptRuntime, xml, parent, isAttachedToParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@RhinoFunctionBody
|
@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()
|
val parentView = parent.jsSanitize()
|
||||||
require(parentView is ViewGroup?) {
|
require(parentView is ViewGroup?) {
|
||||||
"Augment parentView for ui.inflate must be a ViewGroup instead of ${parentView.jsBrief()}"
|
"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
|
activity is ScriptExecuteActivity -> activity
|
||||||
else -> throw WrappedIllegalArgumentException("Global activity ${activity.jsBrief()} must be a ScriptExecuteActivity")
|
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
|
@JvmStatic
|
||||||
@@ -544,9 +546,9 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@RhinoFunctionBody
|
@RhinoFunctionBody
|
||||||
fun findByIdRhinoWithRuntime(scriptRuntime: ScriptRuntime, id: String?): View? {
|
fun findByIdRhinoWithRuntime(scriptRuntime: ScriptRuntime, id: String?): NativeView? {
|
||||||
val view = scriptRuntime.ui.view ?: return null
|
val view = scriptRuntime.ui.view ?: return null
|
||||||
return findByStringIdRhino(view, id)
|
return findByStringIdRhinoRuntime(scriptRuntime, view, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@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()}" }
|
require(view is View) { "Argument view for ui.findByStringId must be a View instead of ${view.jsBrief()}" }
|
||||||
when {
|
when {
|
||||||
id.isJsNullish() -> {
|
id.isJsNullish() -> {
|
||||||
findByStringIdRhino(view, null)
|
findByStringIdRhinoRuntime(scriptRuntime, view, null)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
// require(id is String) { "Argument id for ui.findByStringId must be a string instead of ${id.jsBrief()}" }
|
// 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
|
@JvmStatic
|
||||||
@RhinoFunctionBody
|
@RhinoFunctionBody
|
||||||
fun findByStringIdRhino(view: View, id: String?): View? {
|
fun findByStringIdRhinoRuntime(scriptRuntime: ScriptRuntime, view: View, id: String?): NativeView? {
|
||||||
return JsViewHelper.findViewByStringId(view, id)
|
val foundView = JsViewHelper.findViewByStringId(view, id) ?: return null
|
||||||
|
return ViewExtras.getNativeView(scriptRuntime.topLevelScope, foundView, foundView::class.java, scriptRuntime)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
Reference in New Issue
Block a user