butterknife
3886 ワード
TextView titleにR.id.titleを割り当てるには、次のようにします.
コントロールオブジェクトやresourceなどを一貫した方法で使用できます
不要なテンプレートを取り除くことができます
論理を定義と宣言から分離することができ、論理の実現と分析を容易にすることができます.
Gradleに宣言:
注釈を使用してControls、resources、event callbackを定義し、コンストラクション関数はButterKnifeを使用します.bind(Object, View); 呼び出し.
実際に使用するアクティビティとライフサイクルが異なるため、バインドされたオブジェクトを適切な場所でnullに設定する必要があります.このためbindポイントでUnbinderに戻って処理することができる.onCreateViewでは、通常、Bind解雇onDestroyViewでバインドを解除します.
注釈を使用してControls、resources、event callbackを定義し、コンストラクション関数はButterKnifeを使用します.bind(Object, View); 呼び出し.
例では、getItemを使用して@OnClick関数にitemをインポートします.clickButton()はメソッド定義のように見えますが、実際にはsetOnClickListenerを使用してR.id.btn itemとして宣言されたButtonビューに追加されたリスナーオブジェクトに関連付けられています.だから内部ではgetItemではなくthisitemで使用している場合は、classが最初に作成されたときにButterKnifeが使用されます.bind()を呼び出すとnullの値が呼び出されます.したがって、getItem()のように関数に接続して、後で入力する値を取得する必要があります.
TextView title;
...
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
title = (TextView)activity.findViewById(R.id.title);
// TODO Use fields...
}
ただしButterKnifeを使用すると、以下のように使用できます.@BindView(R.id.title) TextView title;
...
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
// TODO Use fields...
}
Advantageコントロールオブジェクトやresourceなどを一貫した方法で使用できます
不要なテンプレートを取り除くことができます
論理を定義と宣言から分離することができ、論理の実現と分析を容易にすることができます.
Gradleに宣言:
dependencies {
...
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
}
使用例は次のとおりです.public class BasicWithButterKnifeActivity extends AppCompatActivity {
@BindView(R.id.text_change_view)
TextView changeView;
@BindString(R.string.str_basic)
String strChanged;
@BindColor(R.color.colorBasicChanged)
int colorChanged;
@OnClick(R.id.button_change_text)
void changeText() {
changeView.setText(strChanged);
}
@OnClick(R.id.button_change_color)
void changeColor() {
changeView.setBackgroundColor(colorChanged);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic);
ButterKnife.bind(this);
}
}
分割使用(サンプルコード)注釈を使用してControls、resources、event callbackを定義し、コンストラクション関数はButterKnifeを使用します.bind(Object, View); 呼び出し.
実際に使用するアクティビティとライフサイクルが異なるため、バインドされたオブジェクトを適切な場所でnullに設定する必要があります.このためbindポイントでUnbinderに戻って処理することができる.onCreateViewでは、通常、Bind解雇onDestroyViewでバインドを解除します.
public class FragmentB extends Fragment {
@BindView(R.id.txt_description)
TextView description;
@BindView(R.id.img_view)
ImageView image;
@BindString(R.string.str_frag_b)
String strDescription;
@BindDrawable(android.R.drawable.star_big_on)
Drawable drawable;
private Unbinder unbinder;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_fragment, container, false);
unbinder = ButterKnife.bind(this, view);
description.setText(strDescription);
image.setImageDrawable(drawable);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
ViewHolderでの使用(サンプルコード)注釈を使用してControls、resources、event callbackを定義し、コンストラクション関数はButterKnifeを使用します.bind(Object, View); 呼び出し.
例では、getItemを使用して@OnClick関数にitemをインポートします.clickButton()はメソッド定義のように見えますが、実際にはsetOnClickListenerを使用してR.id.btn itemとして宣言されたButtonビューに追加されたリスナーオブジェクトに関連付けられています.だから内部ではgetItemではなくthisitemで使用している場合は、classが最初に作成されたときにButterKnifeが使用されます.bind()を呼び出すとnullの値が呼び出されます.したがって、getItem()のように関数に接続して、後で入力する値を取得する必要があります.
class RecyclerWithButterKnifeViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.txt_item)
TextView text;
String item;
RecyclerWithButterKnifeViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
void bind(final String item) {
this.item = item;
}
@OnClick(R.id.btn_item)
void clickButton() {
text.setText(getItem());
}
private String getItem() {
return this.item;
}
}
Reference
この問題について(butterknife), 我々は、より多くの情報をここで見つけました https://velog.io/@jsw4215/butterknifeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol