Спробуйте використовувати інтерфейси.
Будь-який фрагмент, який повинен повернути дані назад до його вмісту, повинен оголосити інтерфейс для обробки та передачі даних. Потім переконайтеся, що ваша діяльність містить реалізовані інтерфейси. Наприклад:
JAVA
У своєму фрагменті оголосіть інтерфейс ...
public interface OnDataPass {
public void onDataPass(String data);
}
Потім з'єднайте реалізацію інтерфейсу, що містить клас, до фрагменту методу onAttach, наприклад:
OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
У вашому фрагменті, коли вам потрібно обробляти передачу даних, просто зателефонуйте на об’єкт dataPasser:
public void passData(String data) {
dataPasser.onDataPass(data);
}
Нарешті, у вашій діяльності, яка містить реалізаціюOnDataPass
...
@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}
КОТЛІН
Крок 1. Створіть інтерфейс
interface OnDataPass {
fun onDataPass(data: String)
}
Крок 2. Потім з'єднайте реалізацію інтерфейсу, що містить клас, до фрагменту методу onAttach (YourFragment), наприклад:
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
Крок 3. У вашому фрагменті, коли вам потрібно обробляти передачу даних, просто зателефонуйте на об’єкт dataPasser:
fun passData(data: String){
dataPasser.onDataPass(data)
}
Крок 4. Нарешті, у вашій діяльності реалізується OnDataPass
class MyActivity : AppCompatActivity(), OnDataPass {}
override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}