Если вы используете докладчик, я предполагаю, что вы работаете с шаблоном MVP. В этом случае лучше хранить код как можно дальше от компонентов Android (например, фрагмента менеджера) для лучшей развязки.
Мое предложение состояло бы в том, чтобы вызвать метод в представлении (при условии, что представление является действием), и представление должно быть известно докладчику, таким образом, вы можете использовать и интерфейс для представления (которое вы, вероятно, используете )
Примерно так:
public interface MyView {
void methodToUseFragmentManager();
}
Докладчик должен знать об этом, чтобы он выглядел так:
MyView view:
public EPGTitleRowPresenter (MyView view){
this.view = view;
}
void methodToUpdateView(){
view.methodToUseFragmentManager();
}
И, наконец, внедрите этот интерфейс в свою деятельность:
public class MyActivity extends AppCompatActivity implements MyView{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter = new EPGTitleRowPresenter(this);
}
@Override
void methodToUseFragmentManager(){
// Here you can access the FragmentManager
}
}
Я также заметил, что ваш докладчик получает контекст, чтобы отделить вещи, как сказано выше, что не будет хорошей идеей. Всякий раз, когда вам нужно получить доступ к контексту, вызовите метод в представлении
EDIT
Если у вас более 1 докладчика, допустим, у вас есть 2: parentPresenter и childPresenter, то есть EPGTitleRowPresenter, дочерний элемент
Таким образом, ваш родительский подарок должен выглядеть так:
MyView view:
EPGTitleRowPresenter childPresenter;
public ParentPresenter (MyView view){
this.view = view;
childPresenter = new EPGTitleRowPresenter(view);
}
и дочерний элемент (EPGTitleRowPresenter) будет таким же, как в исходном ответе.
Ваша деятельность будет выглядеть так:
public class MyActivity extends AppCompatActivity implements MyView{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter = new ParentPresenter(this);
}
@Override
void methodToUseFragmentManager(){
// Here you can access the FragmentManager
}
}