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()这行代码有空指针?

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

 Tb_user user=userdao.find(str);

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

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

tb_user.setusername(txtlogin.getText().toString());
tb_user.setPassword(txtpwd.getText().toString());
在xml布局中有没有初始值?如果没有的话gettext应该会返回一个null,但是null是没有toString()方法的,所以会报空指针异常