先写一下viewbinding的用法,再提一下当activity作为弹窗时,还用viewbinding需要注意的事项:
build.gradle添加:
viewBinding {
enabled = true
}
如果布局文件是:activity_main.xml
则在Activity中写作:
public class MainActivity extends AppCompatActivity {
ActivityMainBinding mainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(mainBinding.getRoot());
}
}
需要注意的事项(非常重要):
如果你要用Activity做全局弹窗(dialog)之类的,千万不要这么写——
ActivityMainBinding mainBinding;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
mainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(mainBinding.getRoot());
}
这么写会导致这两句无效——
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
正确的写法(如果还是要用viewBinding)——
ActivityMainBinding mainBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
setContentView(R.layout.activity_main);
mainBinding = ActivityMainBinding.bind(findViewById(R.id.main));
}