1

是否可以在使用 Mosby 的 Activity 中使用 Fragment 作为 MvpView?

例如,这是Google 的 todo-mvp-dagger 项目中TaskDetailActivity的精简版:

public class TaskDetailActivity extends AppCompatActivity {

    public static final String EXTRA_TASK_ID = "TASK_ID";

    @Inject TaskDetailPresenter mTaskDetailPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.taskdetail_act);

        // Get the requested task id
        String taskId = getIntent().getStringExtra(EXTRA_TASK_ID);

        TaskDetailFragment taskDetailFragment = (TaskDetailFragment) getSupportFragmentManager()
                .findFragmentById(R.id.contentFrame);

        if (taskDetailFragment == null) {
            taskDetailFragment = TaskDetailFragment.newInstance(taskId);

            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
                    taskDetailFragment, R.id.contentFrame);
        }

        // Create the presenter
        DaggerTaskDetailComponent.builder()
                .taskDetailPresenterModule(new TaskDetailPresenterModule(taskDetailFragment, taskId))
                .tasksRepositoryComponent(((ToDoApplication) getApplication())
                .getTasksRepositoryComponent()).build()
                .inject(this);
    }       

    ...

}

在示例代码中,Fragment 作为视图实例传递给 TaskDetailPresenterModule。使用 Mosby 是否可行,如果可以,这是一种好的做法吗?我们可以把我们的presenter放在Activity里面,用Fragment代替Activity作为MvpView吗?

我问这个是因为我也想知道 Mosby 如何处理内部有多个 Fragment 的 Activity。

谢谢你的帮助。

4

0 回答 0