Study/Android

Intent & SQLite

Kostrian 2015. 1. 29. 11:11

Intent로 생성한 엑티비티에서 부모 엑티비티로의 데이터 전송은 거의 필수적이다. 따라서 이를 다뤄야 할필요가 있었다.


먼저 부모엑티비티에서 자식 엑티비티로의 데이터 전송은

1
2
3
4
Intent intent = new Intent(getApplicationContext(), Child.class);
intent.putExtra("Tag",Data);
...
startActivityForResult(intent, REQUIREMENT_CODE);
cs


이렇게 하고 이제 자식 엑티비티에서 부모 엑티비티에서 보내준 데이터를 받기 위해서는 


1
2
3
4
5
Intent intent = getItent();
<T> var = intent.getExtras().get<T>("Tag");
 
// ex) String
String var = intent.getExtras().getString("Tag");
cs


위의 코드처럼 getExtras()를 이용하면 된다. 이렇게 받은 Bundle에서 필요한 데이터를 get으로 또다시 얻으면 된다.


그리고 다시 부모 엑티비티로 데이터를 전송해야 할 때는 인텐트에 putExtra를 사용하여 다시 정보를 집어 넣고 setResult(int resultCode, Intent intent)를 사용하면 데이터가 전송된다.


즉, 이때 Intent라는 것은 화물선이라고 생각할 수 있다. 부모 엑티비티에서 자식 엑티비티를 생성하면서 같이 화물을 싣고(putExtra) 전달(startActivityForResult)해 준다. 그리고 나서 자식 엑티비티는 부모가 보내준 화물선(Intent)에서 필요한 화물을 내리고(getExtras) 필요에 따라 부모 엑티비티에 화물선(Intent)에 화물을 싣고(putExtra) 화물선을 보낸다(setResult)


또한 안드로이드 앱을 만들면서 DB는 매우 유용하게 쓰인다. 때문에 이또한 사용해야 할 일이 많이 있을것이다.


DB를 사용하기 위해서는 먼저 두가지 변수가 필요하다.


1
2
SQLiteDatabase db;
SQLiteOpenHelper SQLOH;
cs


이때 SQLiteOpenHelper의 경우에는 추상클래스로 그냥 사용할 수 없으며, 따로 클래스를 만들어서 생성자와 void onCreate(SQLiteDatabase db), void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)을 오버라이드 해주어야 한다.


1
SQLOH = new  SQLiteOpenHelper(MainActivity.this, DBFileName, null, version);
cs


을 통해서 SQLOH를 onCreate에서 초기화한다음 사용하면 된다. 이때 중요한 점은 SQLiteOpenHelper를 상속받은 클래스의 onCreate에서 생성한 테이블 이름과 여기서 생성하거나 접근하는 DB의 이름이 같으면 안된다. 즉, DB이름이 DBs.db, 테이블 이름이 DBs라면 이는 아래의 Cursor생성부분에서 오류가 났다.


DB의 테이블에 데이터를 집어넣거나 수정, 삭제하고 싶다면 


1
db = SQLOH.getWritableDatabase();
cs


로 db에 쿼리를 직접 전송하거나 아니면 SQLiteDatabase에 있는 메서드를 이용하면 된다.


또한 데이터를 읽고 싶을때에는


1
2
db = SQLOH.getReadableDatabase();
Cursor c = db.query(TableName, nullnullnullnullnullnull);
cs

를 이용하면 된다.



'Study > Android' 카테고리의 다른 글

MYSQL에서 안드로이드로 데이터 가져오기  (0) 2015.01.29
CheckBox & 갤러리 사진 선택  (0) 2015.01.29
Custom ListView  (0) 2015.01.29
Simple ListView  (0) 2015.01.29
onCreate & Event  (0) 2015.01.29