我有一个片段,里面有2个片段。外部片段中有next和back按钮,通过这些按钮,我可以更改片段。就像
我想在这些片段之间传输数据,但无法实现。对于我来说,将数据从内部片段传输到外部片段并不明显。另外,我在其中一个片段中有地图,并且地图工作不同步。
答案 0 :(得分:0)
要获取对父/外部片段的引用,您应该使用getParentFragment API。
步骤1:在第一个内部片段中,声明一个新接口,以将数据从该片段传递到外部片段。
public class Inner1Fragment extends Fragment {
// Call this method when you want to pass data to outer fragment (such as users press on a button on this fragment)
private void onButtonClick() {
// Pass the message to OuterFragment.
OnMessageListener listener = (OnMessageListener) getParentFragment();
listener.onMessage("Message from Inner1Fragment");
}
// Declare an interface to pass data to outer fragment.
public interface OnMessageListener {
void onMessage(String message);
}
}
步骤2:让外部片段实现OnMessageListener
并编写代码以将消息转发到第二个内部片段。
public class OuterFragment extends Fragment implements Inner1Fragment.OnMessageListener {
@Override
public void onMessage(String message) {
// Forward the message to Inner2Fragment
Inner2Fragment fragment = (Inner2Fragment) getChildFragmentManager().findFragmentByTag("Inner2Fragment");
if (fragment != null) {
fragment.onReceiveMessage(message);
}
}
}
步骤3:。在第二个内部片段中,编写代码来处理收到的消息(我使用Toast API展示了该消息)。
public class Inner2Fragment extends Fragment {
public void onReceiveMessage(String message) {
Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
}
}