Основной класс
public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener, MyInterface {
ViewPager vp;
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.mViewpager_ID);
this.addPages();
tabLayout = (TabLayout) findViewById(R.id.mTab_ID);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(vp);
tabLayout.setOnTabSelectedListener(this);
}
private void addPages() {
MyPagerAdapter pagerAdapter = new MyPagerAdapter(this.getSupportFragmentManager());
pagerAdapter.addFragment(new Fragment1());
pagerAdapter.addFragment(new Fragment2());
pagerAdapter.addFragment(new Fragment3());
vp.setAdapter(pagerAdapter);
}
public void onTabSelected(TabLayout.Tab tab) {
vp.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
@Override
public String setOnDataChangedListener(String Text) {
return Text;
}
@Override
public void onFragmentChanged(int value) {
if (value == 0) {
vp.setCurrentItem(value);
}
if (value == 1) {
vp.setCurrentItem(value);
}
if (value == 2) {
vp.setCurrentItem(value);
}
}}
Фрагмент 1:
public class Fragment1 extends Fragment {
private MyInterface obj;
String a;
Context c;
@Override
public void onAttach(Context context) {
super.onAttach(context);
obj = (MyInterface) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.activity_fragment1,container,false);
EditText edttext=(EditText)rootView.findViewById(R.id.edttxt);
final String data=edttext.getText().toString();
a="testing_communication";
Button btn=(Button)rootView.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
obj.setOnDataChangedListener(data);
obj.onFragmentChanged(1);
}
});
return rootView;
}
@Override
public String toString() {
String title="Fragment:1";
return title;}}
Фрагмент2: ..
public class Fragment2 extends Fragment implements MyInterface {
@Nullable
TextView tv;
String text;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View bootView2=inflater.inflate(R.layout.activity_fragment2,container,false);
tv = (TextView) bootView2.findViewById(R.id.textv);
setOnDataChangedListener(text);
tv.setText(text);
return bootView2;
}
@Override
public String toString() {
String title="Fragment:2";
return title;
}
@Override
public String setOnDataChangedListener(String Text) {
return Text;
}
@Override
public void onFragmentChanged(int value) {
}
}
Интерфейс:
public interface MyInterface {
String setOnDataChangedListener(String Text);
void onFragmentChanged(int value);}
Pageadabter is:
public class MyPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments=new ArrayList<>();
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public void addFragment(Fragment f)
{
fragments.add(f);
}
@Override
public CharSequence getPageTitle(int position) {
String title=fragments.get(position).toString();
return title.toString();
}}
При нажатии кнопки фрагмент1, я могу перемещаться по фрагменту2, но не могу перейти с данными. Похоже, что фрагмент1 находится под фрагментом тела1 onclicklistener obj.onFragmentChanged (1);работает нормально. но obj.setOnDataChangedListener (data.);не работает .. Если кто-нибудь может помочь, я буду очень благодарен вам.