我有一个活动-MainActivity。在本活动中,我有两个片段,都是在XML中以声明方式创建的。
我试图将用户输入的文本字符串传递到片段A到片段B中的文本视图。但是事实证明这非常困难。有人知道我将如何实现这一目标吗?
我知道一个片段可以使用getActivity()
对其活动进行引用。所以我猜我会从那里开始吗?
如何为适配器中的片段设置ID
我为滑块使用一个库: https://github.com/stepstone-tech/android-material-stepper
答案 0 :(得分:0)
要在两个片段之间进行通信,最好使用通信器接口 1-使您的活动通过更改数据的方法实现接口 2-将该接口传递给您的片段
您可能会发现此链接很有帮助https://developer.android.com/training/basics/fragments/communicating
答案 1 :(得分:0)
我正在尝试将用户输入的文本字符串传递给Fragment A到片段B中的文本视图。但是事实证明这非常 难。有人知道我将如何实现这一目标吗?
您可以使用EventBus库轻松实现这一目标
在片段A
EventBus.getDefault().post(new MessageEvent(text));
public static class MessageEvent {
String text;
public MessageEvent(String text) {
this.text = text;
}
}
在片段B中
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(FragmentA.MessageEvent event) {
Log.d(“akshay”,”text= ”+event.text)
}
答案 2 :(得分:0)
您可以使用Fragment#setTargetFragment
和Fragment#getTargetFragment
查看文档here
在您的MainActivity中,您可以执行以下操作:
fragment1.setTargetFragment(fragment2)
在fragment1中,您可以使用typeCast
class Fragment1 extends Fragment {
private void passInput(String string) {
((Fragment2) getTargetFragment())
.updateTextView(string);
}
}
对于具有多个片段的更复杂的数据处理,您应该使用MVVM模式,其中在活动生命周期中注册了viewModel,并且每个片段都可以与该实例通信并观察数据更改。