Передача значения из активности в текущий активный фрагмент, когда EditTextvalue изменяется каждый раз - PullRequest
0 голосов
/ 20 января 2019

Я делаю секретное приложение для Android от 1 месяца, я застрял в проблеме. Сценарий выглядит следующим образом.

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

Пожалуйста, помогите мне в этой ситуации с вашими ценными ответами, спасибо заранее. Потому что я уже достиг своего крайнего срока.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Вы должны создать интерфейс как слушатель между действием и фрагментом, но я предлагаю использовать EventBus, это облегчит вам этот подход

https://github.com/greenrobot/EventBus, http://greenrobot.org/eventbus/

0 голосов
/ 20 января 2019

Я бы проголосовал против этого вопроса, но вы, кажется, в трудном положении.

сначала проверьте, как передавать данные между фрагментами:

Вот что я бы сделал:

 //Set the edit text on a changed listener
    editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

            @Override
            public void afterTextChanged(Editable s) {
                // Pass values from your fragment to your other fragment

        Bundle b = new Bundle();
    b.putString("city", s);

    FragmentB fragB = new FragmentB();
    fragB.setArguments(b); 
    getFragmentManager().beginTransaction().replace(R.id.your_container, fragB);

            }
        });





Then you have to receive your values in the fragment

    Bundle b = this.getArguments();
    if(b != null){
       String city = b.getString("city");
    }

, если ваше значение поиска связано с действием, просто передайтезначение от действия к фрагменту:

  editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

        Bundle bundle = new Bundle();
        bundle.putString(s, "city");
        tab1.setArguments(bundle);


            }
        });

Затем получите аргументы в своем фрагменте

       if (getArguments() != null) {
            String city = getArguments().getString("city);
       }

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

...