MainActivityBinding.inflate(getLayoutInflater()) 页面未更新。

4
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);
    Main2Binding binding1 =  Main2Binding.inflate(getLayoutInflater());
    User user = new User("Test", "User");
    MyHandlers myHandlers = new MyHandlers(this);
    MyStringUtils myStringUtils=  new MyStringUtils();
    binding1.setUser(user);
    binding1.setHandlers(myHandlers);
}

页面未更新。

MainActivityBinding binding1 = DataBindingUtil.setContentView (this, R.layout.main_activity); there is no problem

如何解决这个问题?
2个回答

8
通过inflate方法正确使用数据绑定的方法
@Override
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    //setContentView(R.layout.main2); //<---comment it
    Main2Binding binding1 = Main2Binding.inflate(getLayoutInflater());
    setContentView(binding1.getRoot());
    ...
}

这是这个问题的正确答案。 - Chinese Cat

1
如果您想将布局与您的Activity绑定,您需要使用
MainActivityBinding binding1 = DataBindingUtil.setContentView (this, R.layout.main_activity);

但是当你使用Fragment时,你可以使用inflate。
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    MainActivityBinding binding = DataBindingUtil.inflate(inflater, R.layout.main_activity, container, false);
}

注意:绑定名称将基于布局名称,如果布局文件名为activity_main.xml,则您的绑定将是ActivityMainBinding。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接