接上个问题,贴出代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | public class LoginActivity extends BaseActivity{ private static final String KEY_USERNAME = "key_username" ; private static final String KEY_USERPASSWORD = "key_userpassword" ; private EditText etUser; private EditText etPassword; private Button login; private TextView register; //这是一个逻辑类 private UserBiz mUserBiz = new UserBiz(); @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); initIntent(); } private void initIntent() { Intent intent = getIntent(); if (intent != null ) { String username = intent.getStringExtra(KEY_USERNAME); Log.e( "TAGG" , "测试 :" + username); if (username != null ) { Log.e( "TAGG" , "测试 :" + username); etUser.setText(username); } String password = intent.getStringExtra(KEY_USERPASSWORD); if (password != null ) { Log.e( "TAGG" , "测试 :" + password); etPassword.setText(password); } } } private void initView() { etUser = findViewById(R.id.id_et_username); etPassword = findViewById(R.id.id_et_password); login = findViewById(R.id.id_btn_login); register = findViewById(R.id.id_btn_register); } public void click(View view) { switch (view.getId()) { case R.id.id_btn_login: login.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { String userName = etUser.getText().toString(); String passWord = etPassword.getText().toString(); //判断内容是否为空 if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(passWord)) { Toast.makeText(LoginActivity. this , "账号或者密码不能为空" , Toast.LENGTH_SHORT).show(); return ; } // 加载进度框 startLoadingProgress(); mUserBiz.login(userName, passWord, new CommonCallback<User>() { @Override public void onError(Exception e) { //加载完成,取消加载进度框 stopLoadingProgress(); Log.e( "TAG" , "测试onError" ); Toast.makeText(LoginActivity. this , "账号或者密码错误" , Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(User user) { stopLoadingProgress(); //对账号的一个保存 UserInfoHolder.getInstance().setUser(user); toMainActivity(); finish(); } }); } }); break ; case R.id.id_btn_register: register.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { toRegisterActivity(); } }); break ; } } private void toRegisterActivity() { Intent intent = new Intent(LoginActivity. this , RegisterActivity. class ); startActivity(intent); } private void toMainActivity() { Intent intent = new Intent(LoginActivity. this , MainActivity. class ); startActivity(intent); } public static void launch(Context context, String userName, String password) { Intent intent = new Intent(context,LoginActivity. class ); intent.putExtra(KEY_USERNAME,userName); intent.putExtra(KEY_USERPASSWORD,password); context.startActivity(intent); } //我也不知道里面代码到底干嘛的 @Override protected void onResume() { super .onResume(); CookieJarImpl cookieJar = (CookieJarImpl) OkHttpUtils.getInstance().getOkHttpClient().cookieJar(); cookieJar.getCookieStore().removeAll(); } } |
上面是登录页的 下面是 注册页的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | public class RegisterActivity extends BaseActivity { private EditText mEtUsername; private EditText mEtPassword; private EditText mEtRePassword; private Button mBtnRegister; private UserBiz mUserBiz; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_register); setUpToolbar(); initView(); initEvent(); mUserBiz = new UserBiz(); setTitle( "注册" ); } private void initEvent() { mBtnRegister.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { String userName = mEtUsername.getText().toString(); String paw = mEtPassword.getText().toString(); String rePaw = mEtRePassword.getText().toString(); if (TextUtils.isEmpty(userName)||TextUtils.isEmpty(paw)){ Toast.makeText(RegisterActivity. this , "账号或者密码不能为空" , Toast.LENGTH_SHORT).show(); return ; } if (!paw.equals(rePaw)){ Toast.makeText(RegisterActivity. this , "请输入相同密码" , Toast.LENGTH_SHORT).show(); return ; } //加载框 startLoadingProgress(); mUserBiz.register(userName, paw, new CommonCallback<User>() { @Override protected void onError(Exception e) { stopLoadingProgress(); Toast.makeText(RegisterActivity. this , "账号或者密码错误" , Toast.LENGTH_SHORT).show(); } @Override protected void onSuccess(User response) { stopLoadingProgress(); Log.e( "TAGG" , "测试Rig :" + response.getUserName()); Log.e( "TAGG" , "测试Rig :" + response.getPassword()); LoginActivity.launch(RegisterActivity. this ,response.getUserName(),response.getPassword()); finish(); } }); } }); } private void initView() { mEtUsername = findViewById(R.id.id_et_username); mEtPassword = findViewById(R.id.id_et_password); mEtRePassword = findViewById(R.id.id_et_repassword); mBtnRegister = findViewById(R.id.id_btn_register); } //设置导航栏 protected void setUpToolbar() { Toolbar toolbar = findViewById(R.id.id_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { onBackPressed(); } }); } @Override public void onDetachedFromWindow() { super .onDetachedFromWindow(); mUserBiz.onDestory(); } } |
下面就是逻辑类 UserBiz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public class UserBiz { public void onDestory() { OkHttpUtils.getInstance().cancelTag( this ); } //这是注册的逻辑实现 public void register(String username, String password, CommonCallback<User> callBack) { OkHttpUtils .post() .url(Config.baseUrl + "user_register" ) .tag( this ) .addParams( "username" , username) .addParams( "password" , password) .build() .execute(callBack); } //这是登录的逻辑实现 public void login(String username, String password, CommonCallback<User> callBack) { OkHttpUtils .post() .url(Config.baseUrl + "user_login" ) .tag( this ) .addParams( "username" , username) .addParams( "password" , password) .build() .execute(callBack); } } |
4
收起
正在回答
1回答
接你http://class.imooc.com/course/qadetail/63982问题。你得从源头找,CommonCallback中调 onSuccess()前:1)看一下是否是onResponse返回的问题,User对象是否正常,名字是否返回的就是一个空。2)看一下GsonUtil转成对象时是否有误,这时getUserName()是否有值。3)User 类中的名字是否有对应set,get方法,方法是否正确。4)User类 中属性名与后台返回的key是否一致。
Android网络操作与数据存储2018版
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧