<TextView android:id="@+id/my_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="114dp" android:text="登录/注册>" android:textColor="@color/colorwhite" android:textSize="16sp" />
页面1点击到登录+ 最后的退出
package com.example.asus.jddemozhangjiangxia.ui.fragment; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.asus.jddemozhangjiangxia.R; import com.example.asus.jddemozhangjiangxia.data.bean.InfoBean; import com.example.asus.jddemozhangjiangxia.di.presenter.PresenterImpl; import com.example.asus.jddemozhangjiangxia.di.presenter.contract.IContract; import com.example.asus.jddemozhangjiangxia.ui.activtiy.BackActivity; import com.example.asus.jddemozhangjiangxia.ui.activtiy.LoginActivity; import com.example.asus.jddemozhangjiangxia.ui.activtiy.TouActivity; import com.example.asus.jddemozhangjiangxia.ui.activtiy.XiangQingActivity; import com.example.asus.jddemozhangjiangxia.ui.adapter.OneAdapterbbb; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; import static android.support.constraint.Constraints.TAG; public class fiveFragment extends Fragment implements IContract.IView { @BindView(R.id.my_img_tou) ImageView myImgTou; @BindView(R.id.my_login) TextView myLogin; @BindView(R.id.my_tuijian_recycler) RecyclerView myTuijianRecycler; Unbinder unbinder; private PresenterImpl presenter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_five, container, false); unbinder = ButterKnife.bind(this, view); presenter = new PresenterImpl(); presenter.attData(this); presenter.infoData(); return view; } @Override public void onResume() { super.onResume(); init(); } private void init() { SharedPreferences sp = getActivity().getSharedPreferences("userInfo", 0); String uid = sp.getString("uid", "0"); Log.i("aaa", "init: "+uid); String username = sp.getString("username", "|"); Log.e("TAG1", "" + username); if (username.equals("|")) { Toast.makeText(getActivity(), "未登录", Toast.LENGTH_SHORT).show(); myLogin.setText("登录/注册"); } else { Toast.makeText(getActivity(), "已登录", Toast.LENGTH_SHORT).show(); myLogin.setText(username); } } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } @OnClick({R.id.my_img_tou, R.id.my_login}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.my_img_tou: Intent intent2=new Intent(getActivity(),TouActivity.class); startActivity(intent2); break; case R.id.my_login: SharedPreferences sp = getActivity().getSharedPreferences("userInfo", 0); String username = sp.getString("username", "|"); if (username.equals("|")) { Intent intent = new Intent(getActivity(), LoginActivity.class); startActivity(intent); }else{ Intent intent = new Intent(getActivity(), BackActivity.class); startActivity(intent); } break; } } @Override public void showData(InfoBean msg) { InfoBean.DataBean data = msg.getData(); InfoBean.DataBean.TuijianBean tuijian = data.getTuijian(); final List<InfoBean.DataBean.TuijianBean.ListBeanX> tlist = tuijian.getList(); GridLayoutManager gridLayoutManager3 = new GridLayoutManager(getContext(), 2, GridLayoutManager.VERTICAL, false); myTuijianRecycler.setLayoutManager(gridLayoutManager3); OneAdapterbbb oneAdapterbbb = new OneAdapterbbb(getContext(), tlist); myTuijianRecycler.setAdapter(oneAdapterbbb); oneAdapterbbb.setOnitmeclickLentener(new OneAdapterbbb.onitmeclickLentener() { @Override public void onitmeclick(int itemCount) { int pid = tlist.get(itemCount).getPid(); Intent intent1 = new Intent(getActivity(), XiangQingActivity.class); intent1.putExtra("pid", pid); startActivity(intent1); } }); } @Override public void onDestroy() { super.onDestroy(); presenter.deleteData(this); } }
登录布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" android:orientation="vertical"> <LinearLayout android:layout_weight="7" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/jd" android:layout_gravity="center" android:layout_marginTop="40dp" /> <EditText android:id="@+id/login_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="用户名/邮箱/手机号"/> <EditText android:id="@+id/login_pwd" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码"/> <Button android:layout_marginTop="40dp" android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/login_shape" android:textColor="#ffffff" android:textSize="20dp" android:text="登录" /> <TextView android:id="@+id/register" android:layout_width="match_parent" android:padding="10dp" android:layout_height="wrap_content" android:gravity="center" android:text="新用户注册" /> </LinearLayout> <LinearLayout android:layout_weight="6" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="0dp"> <TextView android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content" android:text="其他登录方式"/> <LinearLayout android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content"> <TextView android:id="@+id/weixin_login" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="微信登录" android:gravity="center" android:drawableTop="@mipmap/weixin" /> <TextView android:id="@+id/qq_login" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="QQ登录" android:gravity="center" android:drawableTop="@mipmap/mqq" /> </LinearLayout> </LinearLayout> </LinearLayout>
登录页面
package com.example.asus.jddemozhangjiangxia.ui.activtiy; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.example.asus.jddemozhangjiangxia.R; import com.example.asus.jddemozhangjiangxia.data.bean.LoginBean; import com.example.asus.jddemozhangjiangxia.di.presenter.PresenterLogin; import com.example.asus.jddemozhangjiangxia.di.presenter.contract.IContractLogin; import com.example.asus.jddemozhangjiangxia.ui.fragment.fiveFragment; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class LoginActivity extends AppCompatActivity implements IContractLogin.IViewLogin { @BindView(R.id.login_name) EditText loginName; @BindView(R.id.login_pwd) EditText loginPwd; @BindView(R.id.login_button) Button loginButton; @BindView(R.id.register) TextView register; @BindView(R.id.weixin_login) TextView weixinLogin; @BindView(R.id.qq_login) TextView qqLogin; private IContractLogin.IPresenterLogin<IContractLogin.IViewLogin> LoginIPresenterLogin; private String logname; private String logpwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); LoginIPresenterLogin = new PresenterLogin(); LoginIPresenterLogin.attData(this); } @OnClick({R.id.login_button, R.id.register, R.id.weixin_login, R.id.qq_login}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.login_button: logname = loginName.getText().toString(); logpwd = loginPwd.getText().toString(); LoginIPresenterLogin.infoData(logname, logpwd); break; case R.id.register: Intent intent = new Intent(LoginActivity.this, RagActivtiy.class); startActivityForResult(intent, 110); break; case R.id.weixin_login: break; case R.id.qq_login: break; } } @SuppressLint("CommitPrefEdits") @Override public void showData(LoginBean msg) { String msg1 = msg.getMsg(); String code = msg.getCode(); if (code.equals("0")) { SharedPreferences sp = getSharedPreferences("userInfo", Context.MODE_PRIVATE); SharedPreferences.Editor edit = sp.edit(); String uid = String.valueOf(msg.getData().getUid()); String token = msg.getData().getToken(); String username = msg.getData().getUsername(); Log.e("TAG","username"+username); edit.putString("token",token); edit.putString("uid", uid); edit.putString("username",username); edit.commit(); Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); finish(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 110 && resultCode == 123) { String name = data.getStringExtra("name"); String pwd = data.getStringExtra("pwd"); loginName.setText(name); loginPwd.setText(pwd); } } }
登录p层
package com.example.asus.jddemozhangjiangxia.di.presenter; import com.example.asus.jddemozhangjiangxia.data.bean.LoginBean; import com.example.asus.jddemozhangjiangxia.di.model.ModelLogin; import com.example.asus.jddemozhangjiangxia.di.presenter.contract.IContractLogin; import java.lang.ref.WeakReference; public class PresenterLogin implements IContractLogin.IPresenterLogin<IContractLogin.IViewLogin> { IContractLogin.IViewLogin iViewLogin; private IContractLogin.IModelLogin iModelLogin; private WeakReference<IContractLogin.IViewLogin> iViewLoginWeakReference; private WeakReference<IContractLogin.IModelLogin> iModelLoginWeakReference; @Override public void attData(IContractLogin.IViewLogin iViewLogin) { this.iViewLogin = iViewLogin; iModelLogin = new ModelLogin(); iViewLoginWeakReference = new WeakReference<>(iViewLogin); iModelLoginWeakReference = new WeakReference<>(iModelLogin); } @Override public void deleteData(IContractLogin.IViewLogin iViewLogin) { iViewLoginWeakReference.clear(); iModelLoginWeakReference.clear(); } @Override public void infoData(String logname, String logpwd) { iModelLogin.requestData(logname, logpwd, new IContractLogin.IModelLogin.onCallBack() { @Override public void stringMsg(LoginBean Msg) { iViewLogin.showData(Msg); } }); } }
登录m层
package com.example.asus.jddemozhangjiangxia.di.model; import com.example.asus.jddemozhangjiangxia.data.bean.LoginBean; import com.example.asus.jddemozhangjiangxia.data.http.OkHttpUtils; import com.example.asus.jddemozhangjiangxia.di.presenter.contract.IContractLogin; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; public class ModelLogin implements IContractLogin.IModelLogin { @Override public void requestData(String logname, String logpwd, final onCallBack onCallBack) { OkHttpUtils.getInstance().apiService.getlogin(logname, logpwd) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<LoginBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(LoginBean loginBean) { onCallBack.stringMsg(loginBean); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }
注册主页面
package com.example.asus.jddemozhangjiangxia.ui.activtiy; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.asus.jddemozhangjiangxia.R; import com.example.asus.jddemozhangjiangxia.data.bean.RagBean; import com.example.asus.jddemozhangjiangxia.di.presenter.PresenterImpl; import com.example.asus.jddemozhangjiangxia.di.presenter.PresenterRag; import com.example.asus.jddemozhangjiangxia.di.presenter.contract.IContractRag; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class RagActivtiy extends AppCompatActivity implements IContractRag.IViewRag { @BindView(R.id.rag_name) EditText ragName; @BindView(R.id.rag_pwd) EditText ragPwd; @BindView(R.id.rag_button) Button ragButton; private IContractRag.IPresenterRag<IContractRag.IViewRag> iViewRagIPresenterRag; private String ragname; private String ragpwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rag_activtiy); ButterKnife.bind(this); iViewRagIPresenterRag = new PresenterRag(); iViewRagIPresenterRag.attData(this); } @OnClick({R.id.rag_button}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.rag_button: ragname = ragName.getText().toString(); ragpwd = ragPwd.getText().toString(); iViewRagIPresenterRag.infoData(ragname, ragpwd); break; } } @Override public void showData(RagBean msg) { String msgMsg = msg.getMsg(); Toast.makeText(this, ""+msgMsg, Toast.LENGTH_SHORT).show(); String code = msg.getCode(); if (code.equals("0")){ Intent intent = getIntent(); intent.putExtra("name",ragname); intent.putExtra("pwd",ragpwd); setResult(123,intent); finish(); } } @Override protected void onDestroy() { super.onDestroy(); iViewRagIPresenterRag.deleteData(this); } }