[Android/Java] Jetpack ViewBinding
Android Studio 4.1.3(windows版) で動作検証してます
ViewBindingを採用することで各コントロールをfindViewById()で呼び出さなくてもよくなりました
Android Developerの説明にある通りnullや型の安全性があるので積極採用する流れになると思います
※ActivityやFragmentでコントロールのIDに重複が無いように定義する必要があります
ViewBindingはAndroid Developerの説明で十分理解ができるかとは思いますが軽く説明してみます
Android DeveloperのViewBindingの説明は以下です
ViewBindingを使用するための設定
build.gradleに以下を追加します
ViewBindingを有効にするとBindingクラスが自動生成されます
android {
viewBinding {
enabled = true
}
}
Activityの場合
MainActivityにid:buttonのButtonがあった場合の例
// 自動生成されます(activity_main.xml)
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
final View view = binding.getRoot();
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
setContentView(view);
}
Fragmentの場合
MainFragmentにid:buttonのButtonがあった場合の例
// 自動生成されます(main_fragment.xml)
private MainFragmentBinding binding;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = MainFragmentBinding.inflate(getLayoutInflater());
final View view = binding.getRoot();
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
カスタムViewがViewBindingに出てこない場合
ちょっと焦りましたが同僚が対応方法しってましたので共有させていただきます
DesignからカスタムViewを追加した場合以下のようにclassで登録されると思います
<view
class="com.xxx.CustomView"
/>
これを以下のようにclassを削除しタグに直接カスタムクラスのクラス名を設定することで
ViewBindingで表示されるようになります
<com.xxx.CustomView
/>
この記事は以下の記事の補足です
Author And Source
この問題について([Android/Java] Jetpack ViewBinding), 我々は、より多くの情報をここで見つけました https://qiita.com/smurata_pvt/items/99cd5f878b4eedb84dc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .