单击视图时,应调用 startActivityForResult。但是我不能在 viewModel 中调用 startActivityForResult。我怎样才能实现它?
我在这里阅读了谷歌示例(https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding)并找到了解决方案:
创建一个接口来实现:
public interface TaskItemNavigator {
void openTaskDetails(String taskId);
}
Run Code Online (Sandbox Code Playgroud)视图模型中有弱引用:
@Nullable
private WeakReference<TaskItemNavigator> mNavigator;
Run Code Online (Sandbox Code Playgroud)在活动中实现它:
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);
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2836 次 |
| 最近记录: |