私は最初の基本的なSQLiteアプリケーションを実行しようとしていますが、クラッシュし、nullオブジェクト参照エラーが発生しました。Sqlite-Androidに挿入中にgetText()でnullオブジェクト参照エラーが発生しました
主な活動
public class MainActivity extends AppCompatActivity{
EditText editText_name,editText_city;
Button button_insert;
MyDBHandler mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// editText_Id=(EditText)findViewById(R.id.editText_Id);
editText_name=(EditText)findViewById(R.id.editText_name);
editText_city=(EditText)findViewById(R.id.editText_city);
button_insert=(Button) findViewById(R.id.button_insert);
insert();
}
public void insert()
{
button_insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean inserted= mydb.addStudent(editText_name.getText().toString(),editText_city.getText().toString());
if (inserted =true)
Toast.makeText(MainActivity.this,"Data is inserted",Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this,"Data is Not inserted",Toast.LENGTH_LONG).show();
}
});
}
}
このエラーが発生しon a null object reference
私は、このコードを実行すると。 エラーが発生するコード行。
boolean inserted= mydb.addStudent(editText_name.getText().toString(),editText_city.getText().toString());
MyDBHandlerクラスコード
public class MyDBHandler extends SQLiteOpenHelper {
public static final String DB_NAME="Student";
//public static final String KEY_ID="key_id";
public static final String KEY_NAME="key_name";
public static final String KEY_CITY="key_city";
public static final String TBL_NAME="info";
public static final int DB_VERSION=1;
public MyDBHandler(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// String CREATE_TABLE="CREATE TABLE info(id INTEGER PRIMARY KEY,name TEXT,city TEXT)";
db.execSQL("create table " + TBL_NAME +"(name TEXT,city TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public boolean addStudent(String name, String city) {
SQLiteDatabase db=getWritableDatabase();
ContentValues contentValues = new ContentValues();
//contentValues.put(KEY_ID,id);
contentValues.put(KEY_NAME,name);
contentValues.put(KEY_CITY,city);
long result= db.insert(TBL_NAME,null,contentValues);
if (result == -1)
{
return false;
}
else
return true;
}
}
Logcat
08-24 12:06:33.884 30371-30371/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.owner.sqlite, PID: 30371
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.owner.sqlite.MyDBHandler.addStudent(com.example.owner.sqlite.Student)' on a null object reference
at com.example.owner.sqlite.MainActivity.onClick(MainActivity.java:35)
at android.view.View.performClick(View.java:4785)
at android.view.View$PerformClick.run(View.java:19884)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
可能な重複のように確認することができます[何NullPointerExceptionがある、と私はそれをどのように修正すればよい?](http://stackoverflow.com/question/218384/what-is-a-nullpointの覚え方とやり方は-i-fix-it) – Selvin
明らかに 'mydb'はヌルです – Selvin
' mydb'はヌルです。それを初期化する。 – Piyush