在运行时显示-java.lang.NullPointerException

时间:2014-01-11 10:21:07

标签: android database sqlite

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的新手,请指导我。提前完成。

1 个答案:

答案 0 :(得分:2)

试试这个..

您尚未初始化number EditText,如下所示。

 number=(EditText)findViewById(R.id.number_id);