public class DataHandler {
public static final String NAME ="name";
public static final String NUMBER ="number";
public static final String DATABASE_NAME="nosms";
public static final String TABLE_NAME="contact";
public static final int DATABASE_VERSION=1;
public static final String TABLE_CREATE="create table contact(name text not null, number text not null);";
DataBaseHelper DBHelper;
Context ctx;
SQLiteDatabase db;
public DataHandler(Context ctx)
{
this.ctx=ctx;
DBHelper = new DataBaseHelper(ctx);
}
private static class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context ctx){
super(ctx,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
try{
arg0.execSQL(TABLE_CREATE);
}
catch(SQLException e){
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
arg0.execSQL("DROP TABLE IF EXISTS contact");
onCreate(arg0);
}
}
public DataHandler open()
{
db=DBHelper.getWritableDatabase();
return this;
}
public void close()
{
DBHelper.close();
}
public long insertData(String number, String name)
{
ContentValues content = new ContentValues();
content.put(NUMBER, number);
content.put(NAME, name);
return db.insertOrThrow(TABLE_NAME ,null,content);
}
public Cursor returnData()
{
return db.query(TABLE_NAME, new String[] {NUMBER,NAME}, null,null, null,null, null);
}
}
主要活动:
import net.multiplesystem.nosms.databaseconnectivity.DataHandler;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Register extends Activity {
Button bregister;
EditText countryCode;
EditText name,number;
DataHandler handler ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sign_up);
countryCode = (EditText)findViewById(R.id.phone_number);
bregister=(Button) findViewById(R.id.button2);
name=(EditText)findViewById(R.id.name);
//String code ="+91";
//countryCode.setCompoundDrawablesWithIntrinsicBounds(new TextDrawable(code), null, null, null);
//countryCode.setCompoundDrawablePadding(code.length()*10);
bregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String getname = name.getText().toString();
String getnumber = number.getText().toString();
handler = new DataHandler(getBaseContext());
handler.open();
long id = handler.insertData(getnumber, getname);
Toast.makeText(getBaseContext(),"Data Inserted",Toast.LENGTH_LONG).show();
}
});
}
}
以下是错误日志:
01-11 04:56:47.443: E/AndroidRuntime(964): FATAL EXCEPTION: main
01-11 04:56:47.443: E/AndroidRuntime(964): java.lang.NullPointerException
01-11 04:56:47.443: E/AndroidRuntime(964): at net.multiplesystem.nosms.Register$1.onClick(Register.java:34)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.view.View.performClick(View.java:4240)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.view.View$PerformClick.run(View.java:17721)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.os.Handler.handleCallback(Handler.java:730)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.os.Looper.loop(Looper.java:137)
01-11 04:56:47.443: E/AndroidRuntime(964): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-11 04:56:47.443: E/AndroidRuntime(964): at java.lang.reflect.Method.invokeNative(Native Method)
01-11 04:56:47.443: E/AndroidRuntime(964): at java.lang.reflect.Method.invoke(Method.java:525)
01-11 04:56:47.443: E/AndroidRuntime(964): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-11 04:56:47.443: E/AndroidRuntime(964): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-11 04:56:47.443: E/AndroidRuntime(964): at dalvik.system.NativeStart.main(Native Method)
01-11 04:56:47.453: E/SoundPool(290): error loading /system/media/audio/ui/KeypressStandard.ogg
这个问题可能看起来像是重复的问题。但那些问题并没有帮助我解决我的问题。 当我在两个字段中输入值并单击注册按钮时,它不会将数据保存在设备上并显示空指针异常。我是android的新手,请指导我。提前完成。
答案 0 :(得分:2)
试试这个..
您尚未初始化number
EditText
,如下所示。
number=(EditText)findViewById(R.id.number_id);