片段数据传输中的片段

时间:2018-10-28 12:47:14

标签: java android android-fragments maps

我有一个片段,里面有2个片段。外部片段中有next和back按钮,通过这些按钮,我可以更改片段。就像

This is what it seems

我想在这些片段之间传输数据,但无法实现。对于我来说,将数据从内部片段传输到外部片段并不明显。另外,我在其中一个片段中有地图,并且地图工作不同步。

1 个答案:

答案 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();
    }
}