我正在尝试使用Android数据绑定,如果模型位于“子包”中,它将无法编译。
当我的模型位于我的根包中但不适用于“子包”模型中的模型时,它可以正常工作。在最后一种情况下,编译失败,指示error: package Models does not exist
。
这有效:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="bindtest"
type="com.sandbox.tests.BindableData1" />
</data>
MainActivity:
import com.sandbox.tests.BindableData1;
import com.sandbox.tests.Models.BindableData2;
[...]
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, com.sandbox.tests.R.layout.activity_main);
binding.setBindtest(new BindableData1());
//binding.setBindtest(new BindableData2());
}
}
这是行不通的:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="bindtest"
type="com.sandbox.tests.Models.BindableData2" />
</data>
MainActivity:
import com.sandbox.tests.BindableData1;
import com.sandbox.tests.Models.BindableData2;
[...]
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, com.sandbox.tests.R.layout.activity_main);
//binding.setBindtest(new BindableData1());
binding.setBindtest(new BindableData2());
}
}
当然,BindableData1和BindableData2严格相同(但显然它们的名称和位置相同)。
模型是从IDE创建的,用于其他类(不是数据绑定)。
有人经历过吗?