java - 嵌入式片段交互
问题描述
我有一个带有 2 个嵌入片段的片段。我想让嵌入式 fragment1 与嵌入式 fragment2 交互。例如,我在嵌入的片段 1 中有一个按钮,当我按下所述按钮时,我希望它更新嵌入片段 2 中的 TextView。
这是我的主要“父母”片段
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<fragment
android:id="@+id/fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment1"/>
<fragment
android:id="@+id/fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment2"/>
</LinearLayout>
这是我的 fragment1 类 onCreateView 方法:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
val mainView = inflater.inflate(R.layout.fragment1, container, false)
val button = mainView.findViewById<Button>(R.id.button)
button.setOnClickListener {
/* Update TextView inside Fragment2 */
}
return mainView
}
这是我的 fragment2 类 onCreateView 方法:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
val mainView = inflater.inflate(R.layout.fragment2, container, false)
val textView = mainView.findViewById<TextView>(R.id.textview)
return mainView
}
解决方案
阅读此内容: https ://developer.android.com/training/basics/fragments/communicating
这是标准方式。基本上创建要实现的Fragment1
接口Activity
;将Activity
Fragment 中的引用分配为该接口;然后从Activity中找到另一个fragment调用fragment方法来更新textView。
编辑:对于片段内的片段,您可以在父片段中实现接口并像这样附加:
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
callback = (SomeInterface) getParentFragment();
} catch (ClassCastException e) {
throw new ClassCastException("Parent fragment must implement SomeInterface");
}
}
但是,正如文章中所述,这是旧方法。现代方式是在共享 ViewModel 之间进行通信。
推荐阅读
- javascript - 将 html/css 动画元素放在标题顶部
- go - 使用 Logrus 在 Golang 中设置嵌套字段?
- r - 用户输入等表格的闪亮 UI 美学改进
- java - 从 inInterceptor spring 发送 api 响应
- python - 从两个循环变量创建字典
- c++ - 如何在 Boost Asio 中使用 Scatter/Gather IO 发送包含向量的结构?
- python - 读取项目是否与 JSON 项目相同
- php - 如何在一个查询中显示多个子类别及其新闻?
- python - 如何检查一个列表是否以另一个列表开头?
- python - Boto3 SSM 服务员不适用于自动化执行