Android电子拍卖系统学习笔记

由于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<String, String> map = new HashMap<String, String>();
        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.NullPointerException
09-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.NullPointerException
09-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那个文件夹,找了很多文章才解决

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值