使用数据绑定时,我成功地将一个对象从一个片段传递到另一个。这是我的布局文件:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data class="ItemDataBinding">
<variable
name="item"
type="com.example.myapp.Item" />
</data>
//Views of ItemsFragment
</layout>
这是我的代码:
action = actionItemsFragmentToItemFragment();
action.setItem(clickedItem);
Navigation.findNavController(rootView).navigate(action);
如您所见,我可以调用布局文件中定义的setItem()
方法。但是,如果我在同一布局文件中添加另一个变量:
<variable
name="shop"
type=type="com.example.myapp.Shop"/>
并重建项目,没有没有 setShop()
方法可用,因此我可以将另一个对象传递给下一个片段。我该如何解决?谢谢
答案 0 :(得分:0)
在布局中定义的变量和实际导航之间看起来有些混乱。如果我对您的理解正确,则希望使用操作在导航目标之间发送两个变量。在导航图中定义了哪些变量可用作操作参数,因此您需要确保在导航图xml中包含与此类似的内容:
<fragment
android:id="@+id/itemFragment"
...>
<argument
android:name="item"
app:argType="integer" />
<argument
android:name="shop"
app:argType="string" />
</fragment>
结果,您将获得导航到ItemFragment
的每个操作可用的参数:
action = actionItemsFragmentToItemFragment(1,"string")
您可以使用getArguments()
访问ItemFragment中的参数。在documentation中查找更多详细信息。
在下一步中,您可以使用这些变量来设置它们以用于数据绑定。