0
如何在屬性中接受方法作爲值? 像onclick屬性的查看:Android:<declare-styleable>方法屬性
<Button android:onClick="onClickMethod"/>
如何定義接受的方法自定義屬性?
我知道我們在資源中使用<declare-styleable>
,但我們如何讓它接受方法?
如何在屬性中接受方法作爲值? 像onclick屬性的查看:Android:<declare-styleable>方法屬性
<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的格式是什麼:onClick?如果我嘗試爲我的attr使用引用格式,則ide抱怨符號無法解析:'app:myOnClick =「onClickMethod」' – Alterecho
您的myOnClick聲明應該如下所示: '。你使用一個字符串,因爲這是用來查找方法名稱的。 –
它的工作原理!但他們如何自動完成onClick的方法? – Alterecho