Отправлять данные из одного фрагмента в другой с помощью пакета. я пробовал это. это не работает

Я попробовал приведенный ниже код, но он не работает. программа раздавлена, не дав мне вывода. Как я могу отправлять данные из одного фрагмента в другой в одном и том же действии? Первое использование фрагмента ` // первый фрагмент

public class FirstFragment extends Fragment implements View.OnClickListener{


    public FirstFragment() {
    }


    Button btnSend;
    EditText etTextContainer;
    Bundle b;
    SecondFragment fragB;
    View v;
    FragmentTransaction fragmentTransaction;
    Fragment fragment;
    SecondFragment mfragment;
    String etex;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        v= inflater.inflate(R.layout.fragment_first2, container, false);
        btnSend=(Button)v.findViewById(R.id.btnSend);
        etTextContainer=(EditText)v.findViewById(R.id.etText);
        btnSend.setOnClickListener(mClickListener);
        return  v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    View.OnClickListener mClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            etex = etTextContainer.getText().toString();
            FragmentTransaction transection = getFragmentManager().beginTransaction();
            mfragment = new SecondFragment();
            //using Bundle to send data
            Bundle bundle = new Bundle();
            bundle.putString("key", etex);
            mfragment.setArguments(bundle); //data being send to SecondFragment
            transection.replace(R.id.tvShowTxt, mfragment);
            transection.isAddToBackStackAllowed();
            transection.addToBackStack(null);
            transection.commit();

        }
    };

    @Override
    public void onClick(View view) {

    }
}

// второй фрагмент

public class SecondFragment extends Fragment {

    Bundle b;
    TextView tvShowText;
    String s;
    View v;

    public SecondFragment() {
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        v= inflater.inflate(R.layout.fragment_second, container, false);
        tvShowText = (TextView)  v.findViewById(R.id.tvShowTxt);
        Bundle bundle=getArguments();
        tvShowText.setText(String.valueOf(bundle.getString("key")));

        return  v;
    }

}`

Добавить журнал сбоев в

Anuraag Baishya 11.04.2018 11:50
1
1
48
2

Ответы 2

Это не рекомендуемый способ

All Fragment-to-Fragment communication is done through the associated Activity. Two Fragments should never communicate directly.

Предложение

Возьмите экземпляр активности из onAttach() внутри фрагмента, а затем попросите Activity связаться с другим фрагментом.

Ссылка: Документация для Android https://developer.android.com/training/basics/fragments/communicating.html#DefineInterface

В FirstFragment создайте такой пакет

Bundle bundle = new Bundle();
bundle.putString("key","abc"); // Put anything what you want


SecondFragment fragment2 = new SecondFragment();
fragment2.setArguments(bundle);

getFragmentManager()
      .beginTransaction()
      .replace(R.id.content, fragment2)
      .commit();

В SecondFragment

Bundle bundle = this.getArguments();

if(bundle != null){
     // handle your code here.
}

Надеюсь, это тебе поможет.

Другие вопросы по теме