使用 android 数据绑定的按钮单击方法调用(已在片段中定义)不起作用。?
Method call (that has been defined in fragment) on button click using android data binding in not working.?
我想在布局 xml 文件中使用 android 绑定来调用 onButtonclick(View v)
。
在这种情况下,如何使用 android 绑定实现按钮 click
?
我按照以下步骤进行操作,但没有用。有什么建议么 ?提前致谢。
Layout1.xml
<data>
<variable
name="myFrag"
type="com.myapp.Fragment1" />
</data>
...
<Button
android:id="@+id/step_button"
style="@style/button_style"
android:onClick="@{myFrag :: onButtonclick}"/>
Fragment1.java
public class Fragment1 extends Fragment {
.....
public void onButtonclick(View v)
{
myStdent.setId("No ID");
}
.....
}
我觉得你不见了
http://prntscr.com/fm6yih(数据绑定对象的初始变量)
Layout1Binding myBinding = DataBindingUtil.inflate(inflater, R.layout.layout1.xml, container, false);
myBinding. setMyFrag(this);
以上几行代码已经解决了问题。我在 onCreateView 中添加了这些行。
在您的片段布局中 xml,定义一个片段变量。然后在您的片段 class 中,使用 binding.setVariable 将 xml 变量映射到片段。现在您应该可以使用 xml.
中的所有片段变量和方法了
在片段布局中xml:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.MyFragment">
<data>
<variable
name="frag"
type="com.example.MyFragment" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> frag.yourMethod()}" />
</RelativeLayout>
</layout>
片段中:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val inflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val binding = DataBindingUtil.inflate<ViewDataBinding>(inflater, R.layout.fragment_my, myFragmentContainer, true)
binding.setVariable(BR.frag, this@MyFragment)
}
}
我想在布局 xml 文件中使用 android 绑定来调用 onButtonclick(View v)
。
在这种情况下,如何使用 android 绑定实现按钮 click
?
我按照以下步骤进行操作,但没有用。有什么建议么 ?提前致谢。
Layout1.xml
<data>
<variable
name="myFrag"
type="com.myapp.Fragment1" />
</data>
...
<Button
android:id="@+id/step_button"
style="@style/button_style"
android:onClick="@{myFrag :: onButtonclick}"/>
Fragment1.java
public class Fragment1 extends Fragment {
.....
public void onButtonclick(View v)
{
myStdent.setId("No ID");
}
.....
}
我觉得你不见了 http://prntscr.com/fm6yih(数据绑定对象的初始变量)
Layout1Binding myBinding = DataBindingUtil.inflate(inflater, R.layout.layout1.xml, container, false);
myBinding. setMyFrag(this);
以上几行代码已经解决了问题。我在 onCreateView 中添加了这些行。
在您的片段布局中 xml,定义一个片段变量。然后在您的片段 class 中,使用 binding.setVariable 将 xml 变量映射到片段。现在您应该可以使用 xml.
中的所有片段变量和方法了在片段布局中xml:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.MyFragment">
<data>
<variable
name="frag"
type="com.example.MyFragment" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> frag.yourMethod()}" />
</RelativeLayout>
</layout>
片段中:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val inflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val binding = DataBindingUtil.inflate<ViewDataBinding>(inflater, R.layout.fragment_my, myFragmentContainer, true)
binding.setVariable(BR.frag, this@MyFragment)
}
}