ButterKnifeは、アノテーションでViewのIDとオブジェクト処理を紐付けるライブラリ。
Butter Knife
ButterKnifeを使ってみたまとめ - Qiita
ButterKnife.bindで紐付く。
package com.bgstation0.butterknife.sample.bk_; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { // メンバフィールドの定義 Context mContext = null; // mContextをnullで初期化. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Buttonにリスナーをセット. mContext = this; // mContextにthisをセット. Button button1 = findViewById(R.id.button1); // button1を取得. button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "Clicked!", Toast.LENGTH_LONG).show(); } }); } }
最初こういう、Buttonを押したらToast表示されるものを、ButterKnifeで書き換える。
build.gradleは、最初、
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
と
android.enableJetifier=true android.useAndroidX=true
だけかとおもったが、
android - マニフェストの統合に失敗しました:属性application @ appComponentFactory-Androidx - ITツールウェブ
↑の現象もあり、
最終的には、このようにした。
activity_main.xmlでButtonを配置。
MainActivity.javaはこのように変更。
build.gradleの関係でAppCompatActivityをAndroid Jetpackにしてしまったけど、これはやらなくてもいいほうほうもあったかも。
これでbuttonを押すと、
Toastが出る。
Sample/butterknife/ButterKnife/bind/BK/BK_ at master · bg1bgst333/Sample · GitHub