我创建了一个接口,当我按FragmentA上的TextView时,我可以在FragmentB上设置文本。有些东西不起作用,我无法弄清楚这一点。创建一个接口与另一个片段进行通信
我创建了一个接口来调用通讯:
public interface Communicator {
void respond(String data);
}
在FragmentA我已经设置TextView的接口上引用名为Communcator和OnClickListener:
Communicator comm;
homeTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
comm.respond("Trying to set text on FragmentB from here");
}
});
FragmentB,设置我的方法来改变文字:
public void setText(final String data) {
startTripTxt.setText(data);
}
终于在MainActivity我已经实现了接口。我觉得这里是我做错了什么:
@Override
public void respond(String data) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container_main, new FragmentB(), "fragment2").addToBackStack(null).commit();
FragmentB fragmentB= (FragmentB) getSupportFragmentManager().findFragmentByTag("fragment2");
if (fragmentB != null) {
fragmentB.setText(data);
}
}
片段2个负荷,但文字是空的。
好。我认为这个问题是在MainActivity的响应函数中当你调用'commit()'时,它并没有在UI线程中运行,需要一段时间才能完成它,然后在之后声明的fragmentB将为空。 – TruongHieu