Невозможно передать данные от фрагмента к фрагменту - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу отправить данные из фрагмента учителя в фрагмент OneTeacher.Я нашел следующий код из интернета.Но он выдает «Null», когда я щелкаю элемент списка.

Пожалуйста, будьте любезны, чтобы дать решение для этого. (У меня вопрос, почему я не могу отправить данные из фрагмента учителя в один фрагмент учителя, используя следующий код).

фрагмент учителя

try {
      lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

               TextView myTextView = (TextView) view.findViewById(R.id.tName);

               String teachernamefrom = myTextView.getText().toString();

               Toast.makeText(getActivity(), teachernamefrom, Toast.LENGTH_SHORT).show();
               //this toast works properly

               Bundle bundle = new Bundle();
               bundle.putString("key1",teachernamefrom);

               getFragmentManager().beginTransaction()
                        .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
                        .replace(R.id.fragment_container, new OneTeacherFragment())
                        .addToBackStack("tag")
                        .commit();

               Fragment nextFrag = new OneTeacherFragment();
               nextFrag.setArguments(bundle);

            }
        });
    } catch (Exception e) {
        Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }

OneTeacherFragment:

        teacherName = (TextView) v.findViewById(R.id.teacher_name);
        Bundle bundle = getArguments();

        if (bundle != null){
            String key = bundle.getString("key1");
            teacherName.setText(key);
        }
        else{
            Toast.makeText(getActivity(), "Null", Toast.LENGTH_SHORT).show();
        }

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы установили аргументы и выполняете транзакции в этом экземпляре, а не в текущем подходе

// Create an instance of the fragment
Fragment nextFrag = new OneTeacherFragment();

// Create an instance of a bundle
Bundle bundle = new Bundle();
// Pass data to the bundle
bundle.putString("key1",teachernamefrom);
// Set the arguments
nextFrag.setArguments(bundle);

// Perform the fragment transaction with the created instance
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.replace(R.id.fragment_container, nextFrag)
.addToBackStack("tag")
.commit();
0 голосов
/ 25 февраля 2019

изменить код в onItemClick

Вы передаете новый объект OneTeacherFragment() при замене Fragment, Вы должны пройти nextFrag

// create OneTeacherFragment
Fragment nextFrag = new OneTeacherFragment();
// set bundle arguments
nextFrag.setArguments(bundle);

getFragmentManager().beginTransaction()
                    .setCustomAnimations(android.R.animator.fade_in, 
android.R.animator.fade_out)
                    .replace(R.id.fragment_container, nextFrag) // pass created nextFrag
                    .addToBackStack("tag")
                    .commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...