由于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那个文件夹,找了很多文章才解决

更多相关文章

  1. Android分享新浪微博
  2. GitHub Android(安卓)开源项目汇总
  3. 玩Android项目开发6-----体系页面(SearchView查询功能)
  4. Android带有删除按钮的EditText:EditTextWithDeleteButton
  5. 如何把个人业余开源项目做到月入8万美元?
  6. RN-修改安卓项目名字
  7. Flutter——踩坑之旅(现有Android项目和现有iOS项目引入同一个Flu
  8. Android学习笔记1:创建Hello World项目
  9. android studio打jar包并添加三方包

随机推荐

  1. 〖Android〗简单隐藏Android虚拟键盘的方
  2. Android Studio开发准备
  3. Android自定义对话框(Custom Dialog)
  4. Android(安卓)实现可以自由移动缩放的图
  5. Android O 硬鼠导致黑屏
  6. Android:Resources资源文件
  7. android gravity padding margin 布局属
  8. 2.3 SQLite存储
  9. Android开发实战-项目学习笔记(1)
  10. android学习日志(一)