weixin_44695730 2019-06-17 21:04 采纳率: 0%
浏览 444

log提示为空指针,但我不清楚到底哪里是没有实例化。。

```public class Login extends Activity{
EditText txtlogin,txtpwd;
Button btnzhuceButton, btndenglButton;
Tb_user tb_user=new Tb_user();
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);

    txtlogin = (EditText) findViewById(R.id.logintext);
    txtpwd =(EditText)findViewById(R.id.passwordtext);
    btnzhuceButton = (Button) findViewById(R.id.zhuce);
    btndenglButton = (Button) findViewById(R.id.denglu);
    tb_user.setusername(txtlogin.getText().toString());
    tb_user.setPassword(txtpwd.getText().toString());

    btndenglButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String str=txtlogin.getText().toString();
            Intent intent = new Intent(Login.this, MainActivity.class);
            userDAO userdao = new userDAO(Login.this);
            Tb_user user=userdao.find(str);
                if (user.getusername()
                        .equals(txtlogin.getText().toString())) {
                    if(user.getPassword()
                    .equals(txtpwd.getText().toString())){
                    startActivity(intent);
                    }else if(txtlogin.getText().toString().isEmpty()){
                    Toast.makeText(Login.this, "请输入用户名!",Toast.LENGTH_SHORT).show();
                    }else if(txtpwd.getText().toString().isEmpty()){
                    Toast.makeText(Login.this, "请输入密码!",Toast.LENGTH_SHORT).show();
                    }else {

Toast.makeText(Login.this, "请输入正确的密码",

                            Toast.LENGTH_SHORT).show();
                }
        }else {
            Toast.makeText(Login.this, "请输入正确的用户名!",Toast.LENGTH_SHORT).show();
            txtpwd.setText("");
            txtlogin.setText("");}
        }
    });

    btnzhuceButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent intent= new Intent(Login.this,zhuce.class);
            startActivity(intent);
        }
    });
}

}
public class Tb_user {
private int _id;
private String username;
private String password;

public Tb_user(){
    super();
}

public Tb_user(int _id,String username,String password){
    super();
    this._id = _id;
    this.username = username; 
    this.password = password; 
}
public int getid() {
    return _id;
}
public void setid(int _id) {
    this._id=_id;
}
public String getusername(){
    return username;
}

public void setusername(String username){
    this.username = username;
}
public String getPassword(){
    return password;
}

public void setPassword(String password){
    this.password = password;
}

}

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import model.Tb_user;

public class userDAO {
    private DBOpenHelper helper;
    private SQLiteDatabase db;

    public userDAO(Context context){
        helper = new DBOpenHelper(context);
        db = helper.getWritableDatabase();
    }

    public void add(Tb_user tb_user) {
        db.execSQL("insert into tb_user (_id,username,password) values (?,?,?)",
                new Object[] {tb_user.getid(),tb_user.getusername(),tb_user.getPassword()});
    }

    public void update(Tb_user tb_user) {
        db.execSQL("update tb_user set password = ?",new Object[] { tb_user.getPassword() });
        db.execSQL("update tb_user set username = ?",new Object[] { tb_user.getusername() });
    }

    public Tb_user find(String username) {
        Cursor cursor = db.rawQuery("select _id from tb_user where username = ?",new String[]{username});
        if (cursor.moveToNext()){
            return new Tb_user(
                    cursor.getInt(cursor.getColumnIndex("_id")),
                    cursor.getString(cursor.getColumnIndex("username")),
                    cursor.getString(cursor.getColumnIndex("password")));
        }
        cursor.close();
        return null;
    }
    public long getCount() {
        Cursor cursor = db.rawQuery("select count(password) from tb_user", null);
        if (cursor.moveToNext()){
            return cursor.getLong(0);
        }
        cursor.close();
        return 0;
    }
    public int getMaxId() {
        Cursor cursor = db.rawQuery("select max(_id) from tb_user", null);
        while (cursor.moveToLast()) {
            return cursor.getInt(0);
        }
        cursor.close();
        return 0;
    }
}

06-17 09:07:03.690: E/AndroidRuntime(18694): at com.example.eddapp.Login$1.onClick(Login.java:39)

                if (user.getusername()这行代码有空指针?
  • 写回答

2条回答 默认 最新

  • Json-Huang 2019-06-17 22:46
    关注

    如果报user.getusername()这行的错误,那可能是如下查询为空导致,

     Tb_user user=userdao.find(str);
    

    一般需要加上为空判断比如,改成如下,

    if  (null!=user&&txtlogin.getText().toString().equals(user.getusername())
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败