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