这是我使用的代码
dbhelper mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
final Intent profile = getIntent();
final String user = profile.getExtras().getString("tete");
final EditText username = (EditText) findViewById(R.id.Pusername);
final EditText password = (EditText) findViewById(R.id.Ppassword);
username.setText(user);
username.setInputType(InputType.TYPE_NULL); //Supaya username tidak dapat diganti
Button update = (Button) findViewById(R.id.btupdate);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newpassword = password.getText().toString();
String newusername = username.getText().toString();
if (password.getText().toString().trim().length() < 6) {
Toast.makeText(getApplicationContext(), "Password Baru Harus diisi minimal 6 karakter", Toast.LENGTH_SHORT).show();
} else {
mydb.editData(newusername, newpassword);
Toast.makeText(getApplicationContext(), "berhasil!", Toast.LENGTH_SHORT).show();
}
}
});
这是我的dbhelper类的代码
public void editData(String username,String password){
SQLiteDatabase db= this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1,username);
contentValues.put(COL_2,password);
db.update(TABLE_NAME,contentValues,"USERNAME = ?", new String[]{username});
//String query="UPDATE " + TABLE_NAME + " SET " + COL_2 + " = '" + password + "' Where " + COL_1 + " = '" + username + "'";
//db.execSQL(query);
}
logcat给出了此错误
java.lang.NullPointerException:尝试调用虚拟方法'void com.example.charlie.gate.dbhelper.editData(java.lang.String, java.lang.String)”上的空对象引用
我尝试烘烤newusername和newpassword字符串以测试它们是否为null,并且结果均包含预期的值,但是无论如何,每当我单击应用程序强制关闭按钮时,请帮忙
答案 0 :(得分:0)
您未正确初始化mydb
,因此在尝试使用它时为null。
在onCreate()
内添加以下行:
mydb = new dbhelper(this, ...);
通常您为此初始化传递this
和其他参数。