Android development viewBinding use and matters needing attention (Activity as a pop-up window Dialog)

First write about the usage of viewbinding, and then mention the things that need to be paid attention to when using viewbinding when the activity is used as a pop-up window:

build.gradle add:

viewBinding {
        enabled = true
    }

If the layout file is: activity_main.xml

Then write in Activity:

public class MainActivity extends AppCompatActivity {
    ActivityMainBinding mainBinding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainBinding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(mainBinding.getRoot());
    }
}

Things to note (very important):

If you want to use Activity as a global pop-up window (dialog) or the like, don't write like this——

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());
}

Writing this way will make these two sentences invalid——

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
           WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

The correct way of writing (if you still want to use 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));
 }

Guess you like

Origin blog.csdn.net/weixin_44917215/article/details/128315458