Android 开发viewBinding使用及其需要注意的事项(Activity做弹窗Dialog)

先写一下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));
 }

猜你喜欢

转载自blog.csdn.net/weixin_44917215/article/details/128315458