Учитывая тот факт, что в Android вам нужен контекст пакета, чтобы можно было раздувать следующее действие из текущего действия с помощью намерения. Однако в случае MVP презентатор должен представлять собой чистый класс Java, не привязанный к таким зависимостям, как сама платформа Android.
Правильно ли реализовать два метода в представлении; Тот, который просит докладчика показать новое представление showNew (активность IView) , а затем докладчик авторизует этот запрос, передавая новое представление обратно в текущее представление и прося использовать его (действие) контекст для раздувания запрашиваемый следующий просмотр.
Другими словами, докладчик по-прежнему тот, кто заказывает создание следующего представления, только если он делает это в контексте текущего представления.
См. Пример кода ниже:
Просмотр интерфейса
public interface IBaseView{
void showAnother(Class nextActivity);
}
Интерфейс ведущего
public interface IBasePresenter {
void showNew(IBaseView nextActivity);
}
Конкретный предъявитель
public class Presenter implements IBasePresenter {
IBaseView view;
public Presenter(IBaseView view){
this.view = view;
}
@Override
public void showNew(IBaseView nextActivity) {
view.showAnother(nextActivity.getClass());
}
Активность Android
public class SampleActivity extends AppCompatActivity implements IBaseView{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
}
public void onClick(View view){
Presenter presenter = new Presenter(this);
presenter.showNew(new SampleNextActivity());
}
@Override
public void showAnother(Class nextActivity) {
Intent intent = new Intent(this, nextActivity);
startActivity(intent);
}
}
Android Следующая активность
public class SampleNextActivity extends AppCompatActivity implements IBaseView {
//activity details here
}
В итоге
Представление создает следующий вид, но только по указанию ведущего . Поскольку докладчику нужен контекст текущего представления, чтобы иметь возможность раздувать следующий вид.
Вопрос
Является ли этот подход каким-либо образом нарушающим методологию MVP
Если (1) является нарушением или недостаточно чистым, есть ли лучший способ заставить докладчика создавать представления (без знания контекста класса Android)?