Я прочитал образцы Google здесь (https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding) и нашел решение:
создать интерфейс для реализации:
public interface TaskItemNavigator {
void openTaskDetails(String taskId);
}
иметь слабую ссылку в модели представления:
@Nullable
private WeakReference<TaskItemNavigator> mNavigator;
реализовать это в деятельности:
public class TasksActivity extends AppCompatActivity implements TaskItemNavigator{
...
@Override
public void openTaskDetails(String taskId) {
Intent intent = new Intent(this, TaskDetailActivity.class);
intent.putExtra(TaskDetailActivity.EXTRA_TASK_ID, taskId);
startActivityForResult(intent, AddEditTaskActivity.REQUEST_CODE);
}
}
Извините, но это абсолютно не чистый способ добиться этого
Возможно, @issamux, но если вы не реализуете что-то вроде SingleLiveEvent, это, вероятно, единственный правильный способ сделать это.
Это допустимый способ решения проблемы, однако вопрос заключается в том, чтобы решить ее с помощью шаблона MVVM. В MVVM представление наблюдает за моделью представления - модель представления не имеет ссылки на представление. Поэтому ответ не является допустимым, если OP хочет использовать MVVM.