I can not transfer data from the Activity to the fragment I am trying to do through the Bundle - it does not work
public class TranslateActivity extends FragmentActivity { private static final int NUM_PAGES = 5; private ViewPager TranslationPager; private PagerAdapter TranslationAdapter; String wordEnglish; String defenitionEnglish; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_translate); // Bundle bundle = new Bundle(); // Intent intent = getIntent(); // String Word = intent.getStringExtra("data"); // bundle.putString("word", Word ); ViewPager pager=(ViewPager)findViewById(R.id.pager); pager.setAdapter(new MyAdapter(getSupportFragmentManager())); Bundle b = new Bundle(); b = getIntent().getExtras(); wordEnglish = b.getString("wordEnglish"); defenitionEnglish = b.getString("defenitionEnglish"); Log.e("tryingtodosmth",wordEnglish); Log.e("tryingtodosmth2",defenitionEnglish); Bundle bundle = new Bundle(); bundle.putString("wordEnglish2", wordEnglish); EnglishFragment english = new EnglishFragment(); english.setArguments(bundle); } } Getting data in the fragment:
public class EnglishFragment extends Fragment { private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; private TextView WordE; private TextView defEnglish; private String wordEnglish; private String mParam1; private String mParam2; private OnFragmentInteractionListener mListener; public EnglishFragment() { } public static EnglishFragment newInstance(String param1, String param2) { EnglishFragment fragment = new EnglishFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { } } //Получаю здесь данные @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_english, container, false); TextView WordE =v.findViewById(R.id.WordEnglish); TextView defEnglish = v.findViewById(R.id.BackgroundEnglish); String word = this.getArguments().getString("wordEnglish2");//Получаю //данные Log.e("checkFrag",word)//Выкидывает исключение, что через log пытаюсь //вывести Null WordE.setText(word);//Ничего не сеттерит,(с закомменченым логом, //конечно), следовательно ничего не textview не //выводит, не считая hint'a, прописанного в XML return v; } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } // @Override // public void onAttach(Context context) { // super.onAttach(context); // if (context instanceof OnFragmentInteractionListener) { // mListener = (OnFragmentInteractionListener) context; // } else { // throw new RuntimeException(context.toString() // + " must implement OnFragmentInteractionListener"); // } // } @Override public void onDetach() { super.onDetach(); mListener = null; } } Fragment PageAdapter
public class MyAdapter extends FragmentPagerAdapter { private com.example.paulr.translaation_project.Second_Layout.EnglishFragment EnglishFragment; public MyAdapter(@NonNull FragmentManager fm) { super(fm); } @NonNull @Override public Fragment getItem(int position) { switch(position) { case 0: return EnglishFragment.newInstance("Hello world","Hi"); case 1: return JapaniseFragment.newInstance("Hello world","Hi"); case 2: return ChineseFragment.newInstance("Hello world","Hi"); case 3: return RussianFragment.newInstance("Hello world","Hi"); default: return EnglishFragment; } } @Override public int getCount() { return 4; } }
FragmentManager. Or maybe the fragment is generally registered in the layout of the activity? - woesss 3:56 pmMyAdapterare falling. Are you trying to write something similar? i.imgur.com/75zqnxN.png If so, double-checkgetItemor another method that returns the desiredFragment. It would be nice to add this adapter on display. - KirstenLy