当点击一个视图时,应该调用 startActivityForResult。但我不能在 viewModel 中调用 startActivityForResult。我该如何实现?
我已阅读了谷歌的示例代码(https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding),并找到了解决方案:
create a interface to implement:
public interface TaskItemNavigator {
void openTaskDetails(String taskId);
}
have a weak reference in view model:
@Nullable
private WeakReference<TaskItemNavigator> mNavigator;
implement it in activity:
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);
}
}