gpt4 book ai didi

Android: 方法属性

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:47 28 4
gpt4 key购买 nike

如何在属性中接受方法作为值?就像在 View 的 onClick 属性中一样:

<Button android:onClick="onClickMethod"/>

如何定义接受方法的自定义属性?

我知道我们使用 <declare-styleable>在资源中,但我们如何让它接受方法?

最佳答案

Android 使用反射来查找方法的名称并调用它。您可以在第 4209 行开始的源代码中看到一个示例 https://github.com/android/platform_frameworks_base/blob/master/core%2Fjava%2Fandroid%2Fview%2FView.java#L4209

             case R.styleable.View_onClick:
if (context.isRestricted()) {
throw new IllegalStateException("The android:onClick attribute cannot "
+ "be used within a restricted context");
}

final String handlerName = a.getString(attr);
if (handlerName != null) {
setOnClickListener(new DeclaredOnClickListener(this, handlerName));
}
break;

如果方法名称不为空,它会创建一个新的 DeclareOnClickListener() 类并使用方法名称对其进行初始化。

DeclareOnClickListener() 类在第 4435 行定义 https://github.com/android/platform_frameworks_base/blob/master/core%2Fjava%2Fandroid%2Fview%2FView.java#L4435

关于Android: <declare-styleable> 方法属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36580316/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com