안드로이드 개발 질문/답변
(글 수 45,052)
현재 DB에 저장되어 있는 데이터를 리스트 뷰로 출력되도록 구현하였습니다.
출력된 리스트 뷰(Activity 1)에서 특정 데이터를 클릭하면, 해당 데이터의 rowID 값을 다른 액티비티(Activity2)로 전달하려고 합니다.
다음과 같이 구현했는데... 오류가 발생합니다. 간단할 것이라고 생각했는데 생각보다 잘 되지 않습니다.ㅠㅠ
많은 관심 부탁드립니다.
Activity1.class
long id_num; @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); id_num = id; // id_num 값 = 1 , 값이 잘 들어오는지 확인 용, 디버깅으로 확인했음 Intent.putExtra("SendData", id); // 오류 (Cannot make a static reference to the non-static method putExtra(String, long) from the type Intent) Intent intent = new Intent(getApplicationContext(), PointcardInfo.class); startActivity(intent); }
Activity2.class
Intent intent = getIntent(); int result = intent.getExtras().getInt("SendData"); Cursor c = dbAdapter.fetchInfo(result);
fetchInfo 함수
// 디비에 저장된 특정 데이터 얻어옴 public Cursor fetchInfo(int result) { Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_CARDTYPE, KEY_CARDNAME, KEY_USERNAME, KEY_CARDNUMBER, KEY_BARCODE }, "_id = result", null, null, null, null, null); if(mCursor != null) mCursor.moveToFirst(); return mCursor; }
감사합니다.
2010.08.26 14:44:19
관심을 가져주셔서 감사합니다. 선생님^^
제가 얼마전에 안드로이드 기초 책을 한번 읽어본 수준이라. 선생님의 말씀의 뜻을 이해하기가 힘드네요. 부끄럽습니다.
조금 더 쉽게 말씀해 주실 수 있겠습니까? 죄송합니다.
2010.08.26 14:49:32
putExtra()라는 함수가 static method가 아니기 때문에 Intent.putExtra()와 같이 클래스내의 함수를 직접 사용하지 못하시는거에요~
객체를 밑에서 생성하셨는데 그 객체를 통해 putExtra()함수를 호출해 주셔야 합니다~
2010.08.26 14:51:04
헛;; 선생님이라뇨 그냥 여기 같은 회원일 뿐입니다.
Class에는 static member와 instance member가 있습니다. 이 부분은 java 에 대해서 먼저 공부를 좀 할 필요가 있겠네요
Intent는 class이고 new Intent()해서 만들어진 intent는 instance입니다.
Intent a = new Intent();
Intent b = new Intent();
하면 a, b는 둘다 Intent지만 서로 다른 instance입니다. 이 instance에 데이터를 실어서 startActivity를 해야하는 것이죠..
그리고 putExtra는 애초에 instance method로 구현되어 있구요~~~
안드로이드 책말고 먼저 java를 조금 더 볼 필요가 있겠네요^^
Intent intent =
new
Intent(getApplicationContext(), PointcardInfo.
class
);
intent.putExtra(
"SendData"
, id);
<meta charset="utf-8">startActivity(intent);
지금 위에서 쓰신 것은 instance 인 intent의 putExtra를 호출하신게 아니라
Intent.putExtra이므로 static method를 호출하셨습니다.