如何通过Android MVP模式实现登录功能,打造长尾词的案例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计546个文字,预计阅读时间需要3分钟。
MVP模式:View层负责显示,初始化Presenter2,Model层提供数据,通常有JavaBean类,并包含一个接口。
MVP模式:1,view层负责显示,里面会初始化Presenter2,Model层提供数据,常常有javabean类,并且不止一个接口3.MVP模式:
1,view 层 负责显示,里面会初始化Presenter
2,Model层提供数据,常常有javabean类,并且不止一个接口
3.Presenter :从Model层拿到数据,初始化view层接口,更改视图
下面直接上代码:
Activity: // Activity 实现implements LoadingContract.View层,用来显示视图 public class MainActivity extends AppCompatActivity implements LoadingContract.View { private EditText mEtNum; private EditText mEtPassword; private Button mLoding; private LoadingContract.Presenter mPresenter; private ProgressDialog mProgressDialog; private String mNum; private String mPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 这里很关键,否则具体实现逻辑层Presenter会报空 // 这里接的是this,而LoadingPresenter的构造参数是LoadingContract.View, // 因为本类MainActivity实现了LoadingContract.View,故可以传this new LoadingPresenter(this); initView(); } @Override protected void onResume() { super.onResume(); // 公共的方法写在BasePresenter里面 mPresenter.start(); } @Override protected void onDestroy() { super.onDestroy(); mPresenter.stop(); } private void initView() { mEtNum = (EditText) findViewById(R.id.number); mEtPassword = (EditText) findViewById(R.id.password); mLoding = (Button) findViewById(R.id.btn); mProgressDialog = new ProgressDialog(this); } public void click(View view){ final String url = "www.baidu.com"; mNum = mEtNum.getText() .toString(); mPassword = mEtPassword.getText() .toString(); mPresenter.submit(this,url,mNum,mPassword); } @Override public void showErro(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT) .show(); } @Override public void showLoading() { mProgressDialog.show(); } @Override public void showSucceed() { Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT) .show(); } @Override public void dismissLoading() { mProgressDialog.dismiss(); } @Override public void setPresenter(LoadingContract.Presenter presenter) { this.mPresenter = presenter; }} Contract: public class LoadingContract { // BasePresenter也是自定义,里面有2个未实现方法 interface Presenter extends BasePresenter{ // 继承BasePresenter,是出于Presenter当中可能会有N多的未实现方法,这样 // 就可以将一些公共的方法写在BasePresenter里面 void submit(Context context,String url,String num,String password); } interface View extends BaseView{ void showErro(String msg); void showLoading(); void showSucceed(); void dismissLoading(); }}源码下载.
本文共计546个文字,预计阅读时间需要3分钟。
MVP模式:View层负责显示,初始化Presenter2,Model层提供数据,通常有JavaBean类,并包含一个接口。
MVP模式:1,view层负责显示,里面会初始化Presenter2,Model层提供数据,常常有javabean类,并且不止一个接口3.MVP模式:
1,view 层 负责显示,里面会初始化Presenter
2,Model层提供数据,常常有javabean类,并且不止一个接口
3.Presenter :从Model层拿到数据,初始化view层接口,更改视图
下面直接上代码:
Activity: // Activity 实现implements LoadingContract.View层,用来显示视图 public class MainActivity extends AppCompatActivity implements LoadingContract.View { private EditText mEtNum; private EditText mEtPassword; private Button mLoding; private LoadingContract.Presenter mPresenter; private ProgressDialog mProgressDialog; private String mNum; private String mPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 这里很关键,否则具体实现逻辑层Presenter会报空 // 这里接的是this,而LoadingPresenter的构造参数是LoadingContract.View, // 因为本类MainActivity实现了LoadingContract.View,故可以传this new LoadingPresenter(this); initView(); } @Override protected void onResume() { super.onResume(); // 公共的方法写在BasePresenter里面 mPresenter.start(); } @Override protected void onDestroy() { super.onDestroy(); mPresenter.stop(); } private void initView() { mEtNum = (EditText) findViewById(R.id.number); mEtPassword = (EditText) findViewById(R.id.password); mLoding = (Button) findViewById(R.id.btn); mProgressDialog = new ProgressDialog(this); } public void click(View view){ final String url = "www.baidu.com"; mNum = mEtNum.getText() .toString(); mPassword = mEtPassword.getText() .toString(); mPresenter.submit(this,url,mNum,mPassword); } @Override public void showErro(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT) .show(); } @Override public void showLoading() { mProgressDialog.show(); } @Override public void showSucceed() { Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT) .show(); } @Override public void dismissLoading() { mProgressDialog.dismiss(); } @Override public void setPresenter(LoadingContract.Presenter presenter) { this.mPresenter = presenter; }} Contract: public class LoadingContract { // BasePresenter也是自定义,里面有2个未实现方法 interface Presenter extends BasePresenter{ // 继承BasePresenter,是出于Presenter当中可能会有N多的未实现方法,这样 // 就可以将一些公共的方法写在BasePresenter里面 void submit(Context context,String url,String num,String password); } interface View extends BaseView{ void showErro(String msg); void showLoading(); void showSucceed(); void dismissLoading(); }}源码下载.

