我正在尝试基于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模式的应用程序中?还是不好的做法?