Как изменить текст фрагмента из класса обслуживания? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть фрагмент, который содержит TextView. Также у меня есть класс, который расширяет Service.
Как изменить текст фрагмента TextView из этого класса обслуживания? Я попытался создать экземпляр из моего фрагмента, чтобы использовать его для вызова метода обновления внутри фрагмента, но я понял, что не могу вызвать getSupportFragmentManager() внутри Service класса.

Итак, что должно Я делаю?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

вы можете получить getSupportFragmentManager () всегда и везде с помощью приведенного ниже кода, используя контекст:

((AppCompatActivity)context).getSupportFragmentManager();

и получить фрагмент:

Fragment myFragment=((AppCompatActivity)context).getSupportFragmentManager().findFragmentById(R.id.your_fragment_id);  

после доступа к фрагменту у вас есть два варианта: выполнить желаемое действие. Первое проще, второе более безопасно.

Option One-> TextView Publi c сделать textview publi c и setText () этого textview из вашего сервиса класс вроде:

myFragment.myTextView.setText("some_text");

Option Two-> TextView Private делает текстовое представление приватным и создает метод для setText () textview во фрагменте, например:

public void setTextViewText(String text){
  textView.setText(text);
}

и позвоните из своего класса обслуживания как:

myFragment.setTextViewText("some_text");
0 голосов
/ 15 февраля 2020

Для этой цели Android имеет приемник вещания. https://developer.android.com/reference/android/content/BroadcastReceiver

...