Как отправить сообщение из одного фрагмента в другой нажатием кнопки «Первый»? - PullRequest
0 голосов
/ 04 января 2019

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

Это файл kotlin первого фрагмента.Он имеет две кнопки, при нажатии на которые следует изменить строковое значение.Внутри этого класса я также создал внутренний интерфейс OnButtonClickListener, как упоминалось в документации Android.

viewHolder = inflater.inflate(R.layout.fragment_test_one, container, false)

    viewHolder.btnFragTestOneMessageOne.setOnClickListener {
        listener.onButtonCLickListener("MESSAGE ONE")
    }

    viewHolder.btnFragTestOneMessageTwo.setOnClickListener {
        listener.onButtonCLickListener("MESSAGE TWO")
    }

    return viewHolder

Это второй фрагмент.Макет этого фрагмента также имеет textView, который должен быть изменен одним нажатием кнопки внутри первого фрагмента.

lateinit var viewHolder: View

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    viewHolder = inflater.inflate(R.layout.fragment_test_two, container, false)
    return viewHolder
}

А вот файл действий.

override fun onButtonCLickListener(strMessage: String) {
    testTwoFragment.viewHolder.tvFragTestTwo.text = strMessage
}


override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_fragment_test)

    supportFragmentManager.beginTransaction().add(R.id.flFragTest, TestOneFragment()).commit()

    btnTestFragOne.setOnClickListener {
        supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testOneFragment).commit()
    }


    btnTestFragTwo.setOnClickListener {
        supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testTwoFragment).commit()
    }

}

1 Ответ

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

Измените ваше сообщение в формате String, затем

Используйте Bundle для отправки строки:

//Put the value
YourNewFragment ldf = new YourNewFragment ();
Bundle args = new Bundle();
args.putString("YourKey", "YourValue");
ldf.setArguments(args);

//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();

В onCreateView нового фрагмента :

//Retrieve the value
String value = getArguments().getString("YourKey");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...