Я использую дизайн материал вкладки следующим образом:передавать данные из одной вкладки дизайна на другую вкладку
Ниже мой MainActivity.class:
public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = (TabLayout) findViewById(R.id.tabs);
viewPager = (ViewPager) findViewById(R.id.viewpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(this);
tabLayout.setupWithViewPager(viewPager);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
System.out.println("onPageSelected Called");
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
Мой ViewPagerAdapter выглядит следующим образом:
public class ViewPagerAdapter extends FragmentPagerAdapter {
private static int count = 2;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FragmentOne();
case 1:
return new FragmentTwo();
}
return null;
}
@Override
public int getCount() {
return count;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position)
{
case 0 :
return "Tab One";
case 1 :
return "Tab Two";
}
return null;
}
}
и здесь мои фрагменты:
Это мое первое имя фрагмента FragmentOne:
public class FragmentOne extends Fragment {
private EditText editText;
private Button btnSendData;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.out.println("IN FRAGMENT ONE");
View view = inflater.inflate(R.layout.fragment_one,container,false);
editText = (EditText) view.findViewById(R.id.et_name);
btnSendData = (Button) view.findViewById(R.id.btn_send);
btnSendData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTwo fragment = new FragmentTwo();
Bundle bundle = new Bundle();
bundle.putString("username",editText.getText().toString());
fragment.setArguments(bundle);
getFragmentManager.beginTransaction.replace(R.id.frag_second,fragment).commit();
}
});
return view;
}
}
и вот еще один фрагмент с именем FragmentTwo:
public class FragmentTwo extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.out.println("IN FRAGMENT TWO");
View view = inflater.inflate(R.layout.fragment_two,container,false);
Bundle bundle = getArguments();
if(bundle!= null)
{
String value = getArguments().getString("username");
}
return view;
}
@Override
public void onResume() {
super.onResume();
System.out.println("onResume gets called");
}
}
Во втором фрагменте я получаю данные Буц его добавление другого вида с предыдущим. увидеть изображение:
поэтому я хочу, чтобы передать данные от FragmentOne к FragmentTwo в два сценария:
1. Я хочу передать данные, когда я нажимаю на кнопку и
2. Когда я проведите пальцем по FragmentTwo данные должны быть пройдены
Также, когда я пытаюсь прокрутить до FragmentTwo, ничего не вызвано в FragmentTwo? почему это так ? Также, когда я нажимаю на вторую вкладку, ничего не вызывается. Пожалуйста, помогите мне, как я должен передавать данные в FragmentTwo при нажатии кнопки?
следующие файлы разметки: здесь fragment_one
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<EditText
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:id="@+id/et_name"
android:hint="Username"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:padding="16dp"
android:text="Send Data"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:id="@+id/btn_send"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
и второй фрагмент, fragment_second.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/second_frag"
android:gravity="center">
<TextView
android:textSize="24sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Fragment Two"
android:id="@+id/textView2" />
Можете ли вы предоставить код, поскольку я новичок в программировании на Android, я прочитал ссылку, но я ее не понял. Можете добавить в код код? –
Проверьте следующие ссылки - 1) http://stackoverflow.com/questions/7149802/how-to-transfer-some-data-to-another-fragment 2) http://stackoverflow.com/questions/16036572/how -to-pass-values-between-fragments Я надеюсь, что это сработает сейчас, если не просто дайте мне знать. Я дам вам образец кода. –
Я отредактировал мой код, пожалуйста, просмотрите мой обновленный код, а также просмотрите изображение, чтобы вы получили представление. –