Android MVP Contract
6518 ワード
MVP簡単ログインDemo
1.Presenter Viewベースクラスの作成
2.集合インタフェースLoginConteactのすべてのView,Presenterを作成する インタフェースはここに書いてあります
3.LoginPresenterを書くここでは主にビジネスロジック
4.Activityコール
5.Fragment
6.レイアウト
//fragment_login
Demoリンクアドレス https://download.csdn.net/download/csdndouniwan/11493702
1.Presenter Viewベースクラスの作成
public interface BasePresenter {
void start();
}
public interface BaseView {
//
void setPresneter(T presneter);
}
2.集合インタフェースLoginConteactのすべてのView,Presenterを作成する インタフェースはここに書いてあります
public interface LoginContract {
interface View extends BaseView {
String getUserName();
String getPassWord();
void LoginSuccess();
void LoginFail(String error);
void resetEditView();
}
interface Presenter extends BasePresenter {
void login();
void reset();
}
3.LoginPresenterを書くここでは主にビジネスロジック
public class LoginPresenter implements LoginContract.Presenter {
private Context mContext;
private LoginContract.View mLoginView;
public LoginPresenter(Context context, LoginContract.View loginView) {
this.mLoginView = loginView;
this.mContext = context;
mLoginView.setPresneter(this);
}
@Override
public void login() {
attemptLogin();
}
@Override
public void reset() {
mLoginView.resetEditView();
}
@Override
public void start() {
}
private void attemptLogin() {
String userName = mLoginView.getUserName();
String passWord = mLoginView.getPassWord();
try {
//
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (userName.equals("123") && passWord.equals("456")) {
mLoginView.LoginSuccess();
} else {
mLoginView.LoginFail(" ");
}
}
}
4.Activityコール
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LoginFragment loginFragment = (LoginFragment) getSupportFragmentManager().
findFragmentById(R.id.contentFrame);
if (loginFragment == null) {
loginFragment = LoginFragment.newInstance("LOGIN_FRAGMENT");
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.contentFrame, loginFragment);
transaction.commit();
new LoginPresenter(this, loginFragment);
}
5.Fragment
public class LoginFragment extends Fragment implements LoginContract.View {
private LoginContract.Presenter mPresenter;
private Button mLoginBtn, mResetBtn;
private TextView mUserNameEdit, mPassEdit;
public static LoginFragment newInstance(String id) {
Bundle args = new Bundle();
args.putString("fragment_id", id);
LoginFragment loginFragment = new LoginFragment();
loginFragment.setArguments(args);
return loginFragment;
}
@Override
public void onResume() {
super.onResume();
mPresenter.start();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_login, container, false);
initVew(root);
return root;
}
private void initVew(View view) {
mUserNameEdit = view.findViewById(R.id.editT_username);
mPassEdit = view.findViewById(R.id.editT_password);
mLoginBtn = view.findViewById(R.id.btn_login);
mResetBtn = view.findViewById(R.id.btn_reset);
mLoginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPresenter.login();
}
});
mResetBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPresenter.reset();
}
});
}
@Override
public String getUserName() {
return mUserNameEdit.getText().toString();
}
@Override
public String getPassWord() {
return mPassEdit.getText().toString();
}
@Override
public void LoginSuccess() {
Toast.makeText(getContext(), " ", Toast.LENGTH_SHORT).show();
}
@Override
public void LoginFail(String error) {
Toast.makeText(getContext(), " " + error, Toast.LENGTH_SHORT).show();
}
@Override
public void resetEditView() {
mUserNameEdit.setText("");
mPassEdit.setText("");
}
@Override
public void setPresneter(LoginContract.Presenter presneter) {
this.mPresenter = presneter;
}
@Override
public void onDestroy() {
super.onDestroy();
if (mPresenter != null)
mPresenter = null;
}
}
6.レイアウト
//activity_main
//fragment_login
Demoリンクアドレス https://download.csdn.net/download/csdndouniwan/11493702