2017-10-28 76 views
0

我是Android新手,尝试学习MVP模式。我在下面写了示例教程,它从EditText获取用户名和密码,并查看它是否匹配“Don”和“Bradman”。如果是,它会相应地显示Toast消息。我的问题是可以将比较逻辑保存在MVP模式下的活动中

“是否可以从活动中的编辑文本中获取值并进行比较?我不这么认为,因为那时业务逻辑出现在活动中,这不是正确的做法。我得到的那些编辑文本值演示类和匹配那里,将消息发送到活动显示吐司下面是我的代码,如果有人能帮助“。

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

您需要将两个方法添加到演示者调用来获取用户名和密码的观点,一旦你获得你需要并调用显示敬酒的方法操作。

你没有任何意义,你有一个与模型的接口,模型是你的域的对象,例如,用户,并且用户有用户名和密码字段,那么你会查看用户的数据和将它们设置在对象中,例如将其保存在数据库中。

我希望它对你有所帮助。