1
是否有可能在運行時與Butter Knife綁定一個監聽器,如onclick?我想將在運行時確定的視圖傳遞給方法,並在該方法內將監聽器綁定到它們。我知道如何通過常規手段完成我想要做的事情,所以我嚴格詢問黃油刀。如何在運行時用Butter Knife綁定偵聽器?
是否有可能在運行時與Butter Knife綁定一個監聽器,如onclick?我想將在運行時確定的視圖傳遞給方法,並在該方法內將監聽器綁定到它們。我知道如何通過常規手段完成我想要做的事情,所以我嚴格詢問黃油刀。如何在運行時用Butter Knife綁定偵聽器?
Butterknife註釋的保留策略是CLASS
,這意味着註釋的字段被編譯器識別(註釋),但不被虛擬機識別。值的綁定發生在運行時。這意味着所有的字段和方法都被預先註釋了,後來Butterknife擁有一個所有字段和方法的映射,並且生成的類需要被綁定。 Butterknife TL; DR
調用ButterKnife.bind(mRequiredView)
將嘗試綁定該視圖中的方法/字段。請注意,如果視圖ID最不明顯,Butterknife會投訴。
這樣做的另一種方法是將您的方法封裝在另一個(內部)類中,該類將用作目標對象。該助手類的
private static class BindWrapper{
@OnClick(R.id.view_later_to_be_bind)
public void onClickedView(View v){
}
}
實例將用於綁定的觀點,如:
//somewhere in the code where we need to bind the listener
BindWrapper target = new BindWrapper();
ButterKnife.bind(target, mRequiredView)
沒有真正優雅的解決方案。