Java 安卓,碎片化为碎片,进入活动交流

Java 安卓,碎片化为碎片,进入活动交流,java,android,android-fragments,Java,Android,Android Fragments,这是我的问题。在我的android应用程序中,我的“活动1”包含“碎片1”。他的版面中的“Fragment1”包含一个“viewpager”,有3页“fragment3”、“fragment4”和“fragment5”。I包含“碎片2”的“活动2”。现在我想在“Fragment”1、2或3中执行一个操作,然后启动activity2,所以从Fragment 3、4或5发送数据,并在Fragment 6中显示它们。为了遵守java标准,我愿意在片段3、4、5中介绍“接口”。因为,我不能,我会出错。在

这是我的问题。在我的android应用程序中,我的“活动1”包含“碎片1”。他的版面中的“Fragment1”包含一个“viewpager”,有3页“fragment3”、“fragment4”和“fragment5”。I包含“碎片2”的“活动2”。现在我想在“Fragment”1、2或3中执行一个操作,然后启动activity2,所以从Fragment 3、4或5发送数据,并在Fragment 6中显示它们。为了遵守java标准,我愿意在片段3、4、5中介绍“接口”。因为,我不能,我会出错。在横向模式下,片段2和片段3并排排列

例如,这里有

片段1

public class Frag1 extends Fragment implements Frag3.Communicator{

    private ViewPager mPager = null;
    private TabLayout mTab = null;
    MyAdapter adapter;
    private int p;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.frag4, container, false);

        mPager = (ViewPager) v.findViewById(R.id.viewPager);
        mTab = (TabLayout) v.findViewById(R.id.tabLayout);
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        mPager.setAdapter(new MyAdapter(fragmentManager));
        mTab.setupWithViewPager(mPager);


        return v;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

    }

    @Override
    public void respond(String data) {

    }

    class MyAdapter extends FragmentStatePagerAdapter
    {
        public MyAdapter(FragmentManager fm)
        {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment = null;
            if(position == 0)
            {
                fragment = new Frag1();
                p = position;

            }
            if(position == 1)
            {
                fragment = new Frag2();
                p = position;
            }
            if(position == 2)
            {
                fragment = new Frag3();
                p = position;
            }

            return fragment;
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            if(position == 0)
            {
                return "Tab 1";
            }
            if(position == 1)
            {
                return "Tab 2";
            }
            if(position == 2)
            {
                return "Tab 3";
            }

            return null;
        }
    }
}
片段3

public class Frag3 extends Fragment {

    Button b;

    Communicator comm;
    public void setCommunicator(Communicator c)
    {
        comm = c;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.frag1, container, false);
        return v;
    }

    public interface Communicator
    {
        public void respond(String data);
    }

    public void openSub()
    {
        comm.respond("Sub ouvert depuis le fragment numéro 1");
    }
}
碎片2

public class Frag2 extends Fragment {

    private TextView tv;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.frag5, container, false);
        tv = (TextView) v.findViewById(R.id.frag5Tv);
        return v;
    }

    public void changeData(String data)
    {
        tv.setText(data);
    }
}

我相信你应该用一个活动或两个活动来统一架构,但这两个方向都是如此。对于一个活动,您可以通过活动的界面进行通信。只需将Fragment1替换为Fragment2即可更改视图。
如果有两个活动,您可以通过startActivityForResult/onActivityResult方法进行通信。

对不起,您的问题不清楚。我在活动中有片段,在片段的布局中有一个视图页面,有3个选项卡,所以有3个片段。我读到片段之间的通信必须通过接口完成。因此,在我的3个选项卡中,我有一个界面,我希望当我在这个片段中执行一个操作时,我可以使用另一个活动(在这个其他活动中,有一个片段在里面),并显示一些更改