我是Android新手并尝试学习MVP模式。我在下面写了示例教程,它从EditText中获取用户名和密码,看它是否匹配“Don”和“Bradman”。如果是,它将相应地显示Toast消息。我的问题是
“可以从Activity中的Edit Text中获取值并在那里进行比较吗?我不这么认为,因为业务逻辑会出现在Activity中,这不是正确的事情。如果是,那我怎么能得到那些编辑Presenter类中的文本值并在那里匹配并向Activity发送消息以显示Toast。以下是我的代码,如果有人可以帮助“:
MainInterface.java
public interface MainInterface {
//Declare all Activity related methods here
interface View{
void checkLoginSuccessful();
}
//Declare all Model related methods here
interface Model{
String getUsername();
String setUsername(String username);
String getPassword();
String setPassword(String password);
}
//Declare all Presenter related methods here -- All Business Logic comes here
interface Presenter {
void onClickLogin();
}
}
PresenterClass.java
public class PresenterClass implements MainInterface.Presenter{
//Now since presenter is going to interact with both classes Model and View so let's invoke both "DataModel" class and "MainActivity" class
private MainInterface.View mview;
public PresenterClass(MainInterface.View view) {
this.mview = view;
}
@Override
public void onClickLogin() {
mview.checkLoginSuccessful();
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity implements MainInterface.View {
private EditText username;
private EditText password;
private Button loginbutton;
PresenterClass presenter;
//DataModel data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
presenter = new PresenterClass(this);
username = (EditText) findViewById(R.id.editusername);
password = (EditText) findViewById(R.id.editpassword);
loginbutton = (Button) findViewById(R.id.loginbutton);
loginbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
presenter.onClickLogin();
}
});
}
@Override
public void checkLoginSuccessful() {
if (username.getText().toString().equals("Don") && password.getText().toString().equals("Bradman")){
Toast.makeText(MainActivity.this, "You have successfully logged in", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(MainActivity.this, "Wrong Username or Password", Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:0)
您需要在视图中添加两个方法,即演示者调用以获取用户名和密码,一旦获得,您就可以执行所需的操作并调用方法来显示Toast。
你有一个模型接口是没有意义的,模型是你的域的一个对象,例如用户,用户有用户名和密码字段,那么你将查看用户的数据和设置例如,它们在对象中将其保存在数据库中。
我希望它对你有所帮助。