Java 安卓,碎片化为碎片,进入活动交流
这是我的问题。在我的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并排排列 例如,这里有 片段1Java 安卓,碎片化为碎片,进入活动交流,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中介绍“接口”。因为,我不能,我会出错。在
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个选项卡中,我有一个界面,我希望当我在这个片段中执行一个操作时,我可以使用另一个活动(在这个其他活动中,有一个片段在里面),并显示一些更改