谷歌文档说,变量可以从包含布局传递到包含布局的绑定,但我无法使其工作,但是获取数据绑定错误****msg:标识符必须具有XML文件中的用户定义类型.处理程序缺少它.包含XML看起来像这样:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<import type="com.example.FocusChangeHandler"/>
<variable
name="handler"
type="FocusChangeHandler"/>
</data>
<!-- Some other views --->
<include
android:id="@+id/inputs"
layout="@layout/input_fields"
bind:handler="@{handler}"/>
</layout>
Run Code Online (Sandbox Code Playgroud)
包含的XML就像这样:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
android:id="@+id/nameEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onFocusChange="@{handler.onFocusChange}"/>
</layout>
Run Code Online (Sandbox Code Playgroud)
我能够通过生成的绑定类引用包含布局的视图,但传递变量不起作用.
我正在尝试用Mockito和Dagger测试一项活动 .我已经能够在我的应用程序中为Activity注入依赖项,但在测试Activity时,我无法向Activity注入mock.我应该注入Activity来测试还是让getActivity()创建它?
public class MainActivityTest extends
ActivityInstrumentationTestCase2<MainActivity> {
@Inject Engine engineMock;
private MainActivity mActivity;
private Button mLogoutBtn;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// Inject engineMock to test
ObjectGraph.create(new TestModule()).inject(this);
}
@Override
protected void tearDown() {
if (mActivity != null)
mActivity.finish();
}
@Module(
includes = MainModule.class,
entryPoints = MainActivityTest.class,
overrides = true
)
static class TestModule {
@Provides
@Singleton
Engine provideEngine() {
return mock(Engine.class);
}
}
@UiThreadTest
public void testLogoutButton() { …Run Code Online (Sandbox Code Playgroud) android dependency-injection functional-testing mockito dagger