GPS 좌표를 이용한 일종의 길안내 어플리케이션을 만들고 있는데요.
GlobalVar_Activity.java 에는 static String selectName=null; 이라는 전역변수가 들어있구요.
All_Activity 에는
public class All_Activity extends Activity {
GlobalVar_Activity myGlobal = (GlobalVar_Activity)getApplicationContext();
DB_Activity db_activity;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_all);
ArrayList<String> arr = new ArrayList<String>();
db_activity = new DB_Activity(this);
db = db_activity.getWritableDatabase();
Cursor c = db.rawQuery("SELECT name FROM DB_Activity", null);
c.moveToFirst();
c.getCount();
/* name 순서대로 ArrayList에 뿌림 */
for (int i = 0; i <c.getCount(); i++) {
arr.add(c.getString(0));
c.moveToNext();
}
ListView list = (ListView) findViewById(R.id.listView1);
final ArrayAdapter<String> aaa = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, arr);
list.setAdapter(aaa);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int position,
long id) {
// position ===> n번째 항목(리스트뷰의 자식아이템의 인덱스값(0부터 시작)
switch (position) {
case 0: // GALAXY 선택
myGlobal.setSelectName("GALAXY");
case 1: // CROCODILE LADIES 선택
myGlobal.setSelectName("CROCODILE LADIES");
. . .
Intent intent_0 = new Intent(All_Activity.this,
GuideMap_Activity.class);
startActivity(intent_0);
이런식으로 리스트뷰 클릭시 전역변수에 값을 설정합니다.
GuideMap_Activity.java 는 맵뷰를 뿌려주는 액티비티로써
Cursor c = db.rawQuery("SELECT * FROM DB_Activity WHERE name = '"
+ GlobalVar_Activity.selectName + "'", null);
c.moveToFirst();
d_Latitude = c.getDouble(2); // 위도
d_Longitude = c.getDouble(3); // 경도
이런식으로 데이터베이스에 저장되어있는 위도와 경도를 빼와서 맵뷰에 목적지를 표시해주는 것인데요.
소스코드에서는 에러가 없는데, VDM으로 어플을 실행해보면 익셉션 오류가 나면서 실행이 되지 않습니다...
로그캣을 보면 런타임 익셉션도 있고 클래스캐스트익셉션도 보이는데요.. 도대체 어디를 어떻게 수정해야 될지..
어디가 잘못 된 것인지 모르겠습니다.
서로 다른 두가지 액티비티간의 전역 변수 사용이 잘못 된 것일까요..
아니면 이와같은 방법 말고 다른 방법이 있을까요?
리스트뷰에서 어떤 아이템을 선택했는지를 기억하여 가이드맵에서 그 선택한 아이템에 따른 GPS좌표를
얻어 오면 되는데요.. 다른 방법이 있다면 어떤 것이 있을까요 ㅜ 이부분만 해결되면 되는데 ...도와주세요



