Как передать данные из одного фрагмента другому, когда кнопка нажата из активности, в которой запускается плейер представления.Как передать данные из одного фрагмента другому в View Pager
activity_main.xml
<android.support.v4.view.ViewPager
android:elevation="@dimen/activity_horizontal_margin"
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<Button
android:id="@+id/btn_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@null"
android:text="@string/next"
android:textColor="@android:color/white" />
, когда я нажимаю btn_next затем следующий фрагмент покажет. Как я буду извлекать данные из предыдущего фрагмента в текущий фрагмент?
У меня есть один фрагмент:
public class BpDetails extends Fragment {
private int page;
private EditText systolic;
private EditText diastolic;
// newInstance constructor for creating fragment with arguments
public static BpDetails newInstance(int page) {
BpDetails fragmentFirst = new BpDetails();
Bundle args = new Bundle();
args.putInt("someInt", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("someInt", 0);
}
// Inflate the view for the fragment based on layout XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.bp_details, container, false);
Log.i("View ",view.toString());
systolic =(EditText) view.findViewById(R.id.systolic);
diastolic =(EditText) view.findViewById(R.id.diastolic);
return view;
}
}
и страница адаптера
public static class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 4;
private static int mSelectedPosition;
public MyPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
//mSelectedPosition=selectedPosition;
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return BasicDetails.newInstance(0);
case 1:
return BpDetails.newInstance(1);
case 2:
return BslDetails.newInstance(2);
case 3:
return Summary.newInstance(3);
default:
return null;
}
}
}
Для всего разъяснений я хочу получить доступ к значению систолического в другом фрагменте, когда пользователь нажимает на btn_next активности.
Update:
Я стараюсь сделать так в фрагменте.
public String getSystolic(){
return this.systolic.getText().toString();
}
тогда, когда пользователь нажимает на следующую кнопку
Fragment bpFragment=adapterViewPager.getItem(vpPager.getCurrentItem());
if (bpFragment instanceof BpDetails){
System.out.println("Current item is "+vpPager.getCurrentItem());
Fragment f=adapterViewPager.getInstantiatedFragment(vpPager.getCurrentItem());
BpDetails fr = (BpDetails)adapterViewPager.getItem(vpPager.getCurrentItem());
String systolicString = fr.getSystolic();
Log.i("Systolic is ",systolicString);
}
http://stackoverflow.com/questions/16036572/how-to-pass-values-between-fragments refere эту ссылку вы можете лучше понять – KrishnaJ
http://stackoverflow.com/a/39252949/4387357 –
@KrishnaJ ссылка, которую вы опубликовали, говорит о передаче данных из одного фрагмента другому, когда я нажимаю кнопку в одном фрагменте. В моем случае нет триггерной точки в фрагменте. Мне нужно сделать это только через основную деятельность btn. –