上面的例子工作正常,因为1.0-rc4版修复了需要不必要变量的问题.
我完全按照文档中的描述进行操作,但它不起作用:
main.xml中:
<layout xmlns:andr...
<data>
</data>
<include layout="@layout/buttons"></include>
....
Run Code Online (Sandbox Code Playgroud)
buttons.xml:
<layout xmlns:andr...>
<data>
</data>
<Button
android:id="@+id/button"
...." />
Run Code Online (Sandbox Code Playgroud)
MyActivity.java:
... binding = DataBindingUtil.inflate...
binding.button; ->cannot resolve symbol 'button'
Run Code Online (Sandbox Code Playgroud)
如何获得按钮?
java data-binding android android-button android-databinding
我正在尝试使用Android M附带的DataBinding Library将事件与xml中的视图绑定.我正在关注Android开发人员的示例并逐步实现.对于视图的属性,如可见性,文本工作正常,但如果我尝试与onclick绑定,它不会按预期工作.这是我到目前为止尝试过的示例代码:
<data>
<import type="android.view.View"/>
<variable name="user" type="com.example.databinding.User"/>
<variable name="handlers" type="com.example.databinding.MyHandlers"/>
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"
android:visibility="@{user.isFriend ? View.VISIBLE : View.GONE}" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:id="@+id/button"
android:layout_gravity="left"
android:onClick="@{handlers.onClickFriend}"/>
Run Code Online (Sandbox Code Playgroud)
主要活动 :
public class MainActivity extends AppCompatActivity {
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding =
DataBindingUtil.setContentView(this,R.layout.activity_main);
user = new User("Pankaj","Kumar",true,true);
binding.setUser(user);
}
}
Run Code Online (Sandbox Code Playgroud)
MyHandlers:
public class MyHandlers {
public void onClickFriend(View view){
Log.i(MyHandlers.class.getSimpleName(),"Now Friend");
}
public void onClickEnemy(View …
Run Code Online (Sandbox Code Playgroud) data-binding android android-databinding android-6.0-marshmallow
我有android数据绑定的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">
<data>
<variable name="presenter" type="com.myapp.presentation.presenter.CreateUserPresenter"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:id="@+id/firstNameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingRight="16dp"
android:paddingBottom="8dp">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:hint="@string/first_name" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/secondNameInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingRight="16dp"
android:paddingBottom="8dp">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:hint="@string/second_name" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnCreate"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:text="@string/create"
android:onClick="@{(view) -> presenter.createUser()}" />
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
和CreateUserPresenter.class
:
public class CreateUserPresenter {
public CreateUserPresenter () {}
public void createUser(String firstName, String lastName) {
}
}
Run Code Online (Sandbox Code Playgroud)
如何在单击按钮的方法中传递输入( …