주요 활동 :Null 포인터 예외 회 전자 및 기타 텍스트 값을 안드로이드에 sqlite 데이터베이스에 삽입하는 동안?
private Button btnSubmit;
private DataSource mDataSource;
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText first_name = (EditText) findViewById(R.id.first_name);
final Spinner relation = (Spinner) findViewById(R.id.relation);
final EditText address = (EditText) findViewById(R.id.address);
Button mSubmitButton = (Button) findViewById(R.id.btnSubmit);
relation.setOnItemSelectedListener(new CustomOnItemSelectedListener());
mSubmitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String fName = first_name.getText().toString();
String re_lation = (String) relation.getSelectedItem();
String add_ress = address.getText().toString();
if ((fName.length() <=0) || (re_lation.length()<=0) || (add_ress.length()<=0)) {
Toast.makeText(MyAndroidAppActivity.this, "please fill the data", Toast.LENGTH_SHORT).show();
} else{
Log.i("name",fName);
Log.i("rel",re_lation);
Log.i("e",add_ress);
mDataSource.addUser(fName, re_lation, add_ress);
}
}
});
}
DataSource.java
private SQLiteDatabase mSQLiteDatabase;
private MySQLiteHelper mSQLiteHelper;
private String[] mAllColumns = {
MySQLiteHelper.COLUMN_ID, MySQLiteHelper.COLUMN_FIRST_NAME, MySQLiteHelper.COLUMN_RELATION, MySQLiteHelper.COLUMN_ADDRESS
};
public DataSource (Context context){
mSQLiteHelper = new MySQLiteHelper(context);
}
public void open() throws SQLiteException {
mSQLiteDatabase = mSQLiteHelper.getWritableDatabase();
}
public void close() {
mSQLiteHelper.close();
}
public void addUser(String first_name, String relation, String address){
ContentValues values = new ContentValues();
Log.i("name",first_name);
values.put(MySQLiteHelper.COLUMN_FIRST_NAME, first_name);
values.put(MySQLiteHelper.COLUMN_RELATION, relation);
values.put(MySQLiteHelper.COLUMN_ADDRESS, address);
mSQLiteDatabase.insert(MySQLiteHelper.TABLE_USERS, null, values);
//Cursor cursor = mSQLiteDatabase.query(MySQLiteHelper.TABLE_USERS, allcolumns, selection, selectionArgs, groupBy, having, orderBy)
}
MySQLiteHelper.java
public class MySQLiteHelper extends SQLiteOpenHelper {
public static final String TABLE_USERS = "users";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_FIRST_NAME = "first_name";
public static final String COLUMN_RELATION = "relation";
public static final String COLUMN_ADDRESS = "address";
private static final String DATABASE_NAME = "users.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_USERS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_FIRST_NAME
+ " text not null," + COLUMN_RELATION + " text not null," +
COLUMN_ADDRESS + " text not null);";
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_USERS);
onCreate(db);
}
}
오류 로그 캣 : 여기
06-20 11:26:02.043: E/AndroidRuntime(342): FATAL EXCEPTION: main
06-20 11:26:02.043: E/AndroidRuntime(342): java.lang.NullPointerException
06-20 11:26:02.043: E/AndroidRuntime(342): at com.mkyong.android.MyAndroidAppActivity$1.onClick(MyAndroidAppActivity.java:62)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.view.View.performClick(View.java:2485)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.view.View$PerformClick.run(View.java:9080)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Handler.handleCallback(Handler.java:587)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Handler.dispatchMessage(Handler.java:92)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Looper.loop(Looper.java:123)
06-20 11:26:02.043: E/AndroidRuntime(342): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-20 11:26:02.043: E/AndroidRuntime(342): at java.lang.reflect.Method.invokeNative(Native Method)
06-20 11:26:02.043: E/AndroidRuntime(342): at java.lang.reflect.Method.invoke(Method.java:507)
06-20 11:26:02.043: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-20 11:26:02.043: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
나는 t을 가지고 그는 널 포인터 예외에 값을 제출 중 동안
mDataSource.addUser(fName, re_lation, add_ress);
내가 이리와 생성되지 않습니다 데이터베이스 values.but 세 가지 오류 라인을 지적하고있어 오류 라인, 스피너와 SQLite는 데이터베이스에서 다른 텍스트 값을 삽입하는 동안 데이터베이스에, 그것은 null 포인터 exception.what 내 프로그램에 오류가 throw됩니다. 아무도 말해 줄래? 아직 open() 메서드 당신의 onCreate()
콜백
protected void onCreate(Bundle savedInstanceState)
{
setContentView(R.layout.layout);
mDataSource = new DataSource(getBaseContext());
// ... The Rest of your code
}
과 또한 데이터 소스의 생성자의 호출에
당신이 그것을 초기화해야
을 초기화되지
View에서 삭제 view.onClickListener j에서보기 시도해주세요 onClickListener –
onclicklisnter 메서드가 작동하고 있습니다. 해당 줄이 여기에서 호출하지 않습니다. 그러나 올바른 생성자를 넣으십시오. – rajeshlawrance