Android电子拍卖系统学习笔记
16lz
2021-01-24
由于Android学得渣,想学点项目来丰富项目经验,咨询了老师,老师觉得我菜所以推荐我学《Android疯狂讲义》上最后的电子拍卖系统项目,过程痛并快乐着,且看且学。但有时候自己的粗心大意会使自己崩溃的,所以朋友们还是细心点好。每一次粗心的bug都令我痛不欲生,找到答案后又想拍死自己!
import java.util.HashMap;import java.util.Map;import org.json.JSONObject;import com.lq.client.util.HttpUtil;import com.lq.auction.DialogUtil;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class Login extends Activity { EditText etName, etPass; Button bnLogin, bnCancel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); etName = (EditText) findViewById(R.id.userEditText); etPass = (EditText) findViewById(R.id.pwdEditText); bnLogin = (Button) findViewById(R.id.bnLogin); bnLogin = (Button) findViewById(R.id.bnCancel); bnCancel.setOnClickListener(new HomeListener(this)); bnLogin.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (validate()) { if (loginPro()) { Intent intent = new Intent(Login.this, AuctionClientActivity.class); startActivity(intent); finish(); } else { DialogUtil.showDialog(Login.this , "用户名称或者密码错误,请重新输入!", false); } } } }); } private boolean loginPro() { //获取用户输入的用户名、密码 String username = etName.getText().toString(); String pwd = etPass.getText().toString(); JSONObject jsonObject; try { jsonObject = query(username,pwd); //查询用户名、密码是否正确 //如果userId大于0 if (jsonObject.getInt("userId")>0) { return true; } } catch (Exception e) { DialogUtil.showDialog(this , "服务器异常,请稍后再试", false); e.printStackTrace(); } return false; } private boolean validate() { String username = etName.getText().toString().trim(); if (username.equals("")) { DialogUtil.showDialog(this, "用户账户必填", false); return false; } String pwd = etPass.getText().toString().trim(); //trim():去掉前后空格 if (pwd.equals("")) { DialogUtil.showDialog(this, "用户密码必填", false); return false; } return true; } private JSONObject query(String username, String password) throws Exception{ //使用Map封装参数 Map map = new HashMap(); map.put("user", username); map.put("pass", password); //定义发送请求的URL String url = HttpUtil.BASE_URL + "login.jsp"; return new JSONObject(HttpUtil.postReuest(url, map)); }}
报错是这样的
09-28 07:11:43.901: E/AndroidRuntime(836): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lq.auction/com.lq.auction.Login}: java.lang.NullPointerException09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread.access$600(ActivityThread.java:141)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)09-28 07:11:43.901: E/AndroidRuntime(836): at android.os.Handler.dispatchMessage(Handler.java:99)09-28 07:11:43.901: E/AndroidRuntime(836): at android.os.Looper.loop(Looper.java:137)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread.main(ActivityThread.java:5103)09-28 07:11:43.901: E/AndroidRuntime(836): at java.lang.reflect.Method.invokeNative(Native Method)09-28 07:11:43.901: E/AndroidRuntime(836): at java.lang.reflect.Method.invoke(Method.java:525)09-28 07:11:43.901: E/AndroidRuntime(836): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)09-28 07:11:43.901: E/AndroidRuntime(836): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)09-28 07:11:43.901: E/AndroidRuntime(836): at dalvik.system.NativeStart.main(Native Method)09-28 07:11:43.901: E/AndroidRuntime(836): Caused by: java.lang.NullPointerException09-28 07:11:43.901: E/AndroidRuntime(836): at com.lq.auction.Login.onCreate(Login.java:35)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.Activity.performCreate(Activity.java:5133)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)09-28 07:11:43.901: E/AndroidRuntime(836): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)09-28 07:11:43.901: E/AndroidRuntime(836): ... 11 more
细心的朋友应该能找到一处,再细心一点的朋友应该能全找到。
没错就是这两句话:
bnLogin = (Button) findViewById(R.id.bnLogin); bnLogin = (Button) findViewById(R.id.bnCancel); bnCancel.setOnClickListener(new HomeListener(this)); bnLogin.setOnClickListener(new OnClickListener() {...
之前我看了报错,百度了答案,很多都是说的ui出错,可以我之前看了那么多遍都没看出来~~~但苦于找不到答案,只好一句话一句话看,好,TM的终于找到了,但错的有点奇葩,bnLogin和bnCancel的Listener弄反了!都是盲目一直照着书敲的结果,找到一处后运行,还是报错,这次我不再高估自己,仔细一个单词一个单词的看,一下就看到上面的bnCancel的按钮设置错了,这时我对自己已经无言以对。。。根本没有技术难度,却在这上面耗了这么久的时间,多久?前天到今天三个晚上。这是个教训,我要牢牢记住。不过也有客观原因,我的电脑配置太低,每一次运行都耗费很长时间,还很卡,so,我现在在教室做这件事,因为我不甘心哪~
做这个项目一开始还有个困难就是编译auction那个文件夹,找了很多文章才解决
更多相关文章
- Android分享新浪微博
- GitHub Android(安卓)开源项目汇总
- 玩Android项目开发6-----体系页面(SearchView查询功能)
- Android带有删除按钮的EditText:EditTextWithDeleteButton
- 如何把个人业余开源项目做到月入8万美元?
- RN-修改安卓项目名字
- Flutter——踩坑之旅(现有Android项目和现有iOS项目引入同一个Flu
- Android学习笔记1:创建Hello World项目
- android studio打jar包并添加三方包