【问题标题】:viewbindig class doest instantiate outside onCreate method视图绑定类不在 onCreate 方法之外实例化
【发布时间】:2021-03-07 12:32:26
【问题描述】:

推荐方式:

public class MainActivity extends AppCompatActivity {
ActivityMainBinding mainView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mainView = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(mainView.getRoot());


}

}

我的方式:

public class MainActivity extends AppCompatActivity {
ActivityMainBinding mainView = ActivityMainBinding.inflate(getLayoutInflater());;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(mainView.getRoot());


}

}

我以我的方式在任何方法之外实例化 viewBinding 类,在这种情况下,在 onCreate 方法之外,但是我的应用程序被迷住并且没有以这种方式打开视图绑定,我只是惊讶地看到它不起作用,这有什么问题,正如我们都知道任何方法之外的类主体中的任何内容,所有方法都可以访问变量或对象属性等等,但在我的情况下似乎setContentView(mainView.getRoot());

【问题讨论】:

    标签: android android-viewbinding


    【解决方案1】:

    就活动生命周期而言,您调用getLayoutInflater() 为时过早。

    字段初始化程序在对象实例化时运行。 onCreate() 被 Android 框架调用的时间要晚得多。在实例化时,框架还没有机会初始化活动对象中的任何内容,包括布局充气器等系统服务。

    【讨论】:

    • 我猜想 idk 实际上是如何实例化 android 活动的,所以看起来有点奇怪,谢谢
    猜你喜欢
    • 2023-04-09
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多