如何以MVP模式实现Cursor Loader?

时间:2018-08-20 23:11:33

标签: android dagger-2 mvp android-mvp

我正在尝试基于MVP模式在应用程序中创建登录活动。用户输入将使用Cursor Loader发送到数据库。

1#是使用Presenter(包括验证)将用户输入从视图传递到模型的正确方法,并在模型中使用其他db provider类提供它吗?

public class LoginActivityModel extends AppCompatActivity implements LoginActivityMVP.Model, LoaderManager.LoaderCallbacks<Cursor> {

private ApplicationModule applicationModule;

@Override
public void sendUserToDb(String firstName, String secondName, Uri currentUserUri) {
    ContentValues values = new ContentValues();
    String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());

    values.put(UserEntry.COLUMN_USERNAME, firstName);
    values.put(UserEntry.COLUMN_PASSWORD, secondName);
    values.put(UserEntry.COLUMN_DATE, date);

    if (currentUserUri != null) {
        getSupportLoaderManager().initLoader(0, null, this);
    }

    Uri newUri = applicationModule.provideContext().getContentResolver().insert(UserEntry.CONTENT_URI, values);
    if (newUri == null) {
        Toast.makeText(applicationModule.provideContext(), "failed",
                Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(applicationModule.provideContext(), "succeed",
                Toast.LENGTH_SHORT).show();
    }
}

2a#如果是,如何从视图中插入上下文?正如您在上面看到的,我尝试将上下文注入到根应用模块中,但是它不起作用。我从App获得空上下文。我在stackoverflow上找到的任何其他方式均无效。

@Module
public class ApplicationModule {

private Application application;

public ApplicationModule(Application application) {
    this.application = application;
}

@Provides
@Singleton
public Context provideContext() {
    return application;
}
} 

另外,我的应用程序

public class App extends Application {

private ApplicationComponent component;
public LoginActivity login;

@Override
public void onCreate() {
    super.onCreate();

    component = DaggerApplicationComponent.builder()
            .applicationModule(new ApplicationModule(this))
            .loginActivityModule(new LoginActivityModule())
            .build();
}

public ApplicationComponent getComponent() {
    return component;
}
}

2b#如果没有,如何将Cursor Loader实施到基于MVP模式的应用程序中?还是不好的做法?

0 个答案:

没有答案