카피 앤 페이스트를 많이 해서 소스가 좀 난잡합니다.
오류가 나는 부분이 MapView 에서 Marker를 클릭하면 Marker.java 파일의 onTap(int index) 메서드를
호출하고 AlertDialog 를 띄웁니다. 확인을 누르면 MyPositionMap.java 파일의 onTextInput() 메서드를
호출하고
intent = new Intent(this,MyActivity.class);
  startActivity(intent);
를 실행하는데 에러가 발생됩니다. 에러 내용은

10-22 07:16:38.468: ERROR/AndroidRuntime(334): Uncaught handler: thread main exiting due to uncaught exception
10-22 07:16:38.477: ERROR/AndroidRuntime(334): java.lang.NullPointerException
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.content.ComponentName.<init>(ComponentName.java:75)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.content.Intent.<init>(Intent.java:2551)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at com.medi.study.MyPositionMap.onTextInput(MyPositionMap.java:382)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at com.medi.study.Marker$1.onClick(Marker.java:94)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.os.Looper.loop(Looper.java:123)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invoke(Method.java:521)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-22 07:16:38.477: ERROR/AndroidRuntime(334):     at dalvik.system.NativeStart.main(Native Method)

실제 로그를 찍어봐도

Log.i("log","+"+this.toString());
  Log.i("log","+"+MyActivity.class.toString());

10-22 07:16:38.437: INFO/log(334): +com.medi.study.MyPositionMap@43d372a8
10-22 07:16:38.447: INFO/log(334): +class com.medi.study.MyActivity

정상적으로 값이 찍히는 데 위와같은 에러가 발생되는데
원인좀 찾아주세요. 부탁드려요.

************* 첫번째 소스 MyPositionMap.java
package com.medi.study;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.TextView;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;


@SuppressWarnings("serial")
public class MyPositionMap extends MapActivity implements OnGestureListener,Serializable{
 MapView mMap;
 MapController mControl;
 
 // 위치 정보를 얻기 위한 매니져
 LocationManager mLocationManager;
 
 private List<Overlay> listOfOverlays; //맵에 표시된 오버레이(레이어)들을 가지고 있는 리스트
 private String bestProvider; //현재 위치값을 가져오기위한 프로바이더. (network, gps)
 
 private long lastTouchTimeDown = -1;
 private long lastTouchTimeUp = -1;
 
 Double latitude = 0.0;
 Double longitude = 0.0;
 
 //지명 검색을 위한 클래스
 Geocoder mGeoCoder;
 TextView mStatusText;
 
 // 맵 롱클릭 추가를 위해 추가
 private Location currentLocation; //현재위치
 private LocationManager locM; //위치 매니저
 private LocationListener locL; //위치 리스너
 
 Intent intent;
 
 protected boolean isRouteDisplayed() {
  // 경로를 표시해 줄 것인지의 여부
  return false;
 }
 
 private final class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener {
       // Implementation
 }
 
 private GestureDetector mGestureDetector;


 @SuppressWarnings("null")
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.maps);
  
  //overlayHere = null;
  //overlayBranch = null; //각 오버레이 초기화
  
  //인텐트로부터의 파라미터 구하기 (5)  
  Bundle extras=getIntent().getExtras();
  if (extras!=null){
   latitude=extras.getDouble("latitude");
   longitude=extras.getDouble("longitude");
  }else{
   latitude = 37.491885;
   longitude = 127.039289;
  }
  
  Log.i("log","1::"+latitude.toString());
  Log.i("log","2::"+longitude.toString());
  
  mMap = (MapView)findViewById(R.id.map_view); // 맵뷰 객체를 가져온다.
  mControl = mMap.getController(); //맵 컨트롤러를 가져온다.
  mControl.setZoom(16); // 초기 확대 16으로 지정
  mMap.setBuiltInZoomControls(true);
  
  Drawable marker = getResources().getDrawable(R.drawable.marker);
  marker.setBounds(0, 0,
       marker.getIntrinsicWidth(),
       marker.getIntrinsicHeight());
  
  
  
  GeoPoint pt = new GeoPoint((int) (latitude* 1E6), (int) (longitude* 1E6));
  mControl.setCenter(pt);
  
  Marker itemizedOverlay = new Marker(marker,this,mMap);
  
  OverlayItem overlayitem = new OverlayItem(pt, "안녕", "서울");
  itemizedOverlay.addOverlay(overlayitem);
  mMap.getOverlays().add((itemizedOverlay));
  Log.i("log","11111");
  
  //Toast.makeText(this, "위도:"+lct.getLatitude()+"\n"+"경도:"+lct.getLongitude(), 3000).show();
  
  locM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  Log.i("log","22222");
  //Criteria 클래스를 이용하여 요구조건을 명시하여, 가장 적합한 기술을 결정
  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_COARSE);
  criteria.setPowerRequirement(Criteria.POWER_LOW);
  criteria.setAltitudeRequired(false);
  criteria.setBearingRequired(false);
  criteria.setSpeedRequired(false);
  criteria.setCostAllowed(true);
  Log.i("log","33333");
  //true=현재 이용가능한 공급자 제한 (return String)
  //false (return List<String>)
  String bestProvider = locM.getBestProvider(criteria, true);
  //현재 위치
  Location location = locM.getLastKnownLocation(bestProvider);
  Log.i("log","44444");
  
  
  //위치 매니저를 시스템으로부터 받아온다.
  locM = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  
  //onTouchEvent 의 ACTION_DOWN 등을 가지고 직접 처리 하지 않고
  //제스처들을 쉽게 캐치할수있는 리스너이다.
  OnGestureListener onGestureListener;
  Log.i("log","66666");
  mGestureDetector = new GestureDetector(this, new SimpleGestureListener());
  Log.i("log","77777");
 }
 
 public boolean onTouchEvent(MotionEvent e) {
  Log.i("log","onTouch");
      
        return true;
    }
 
 protected void updateOverlay(Location location) {
  //기존에 화면에 찍어둔 오버레이 (마커들)을 싹 지운다.
  listOfOverlays = mMap.getOverlays(); //맵뷰에서 오버레이 리스트를 가져온다.
  if (listOfOverlays.size() > 0) {
  listOfOverlays.clear(); //오버레이가 있을때 싹 지워준다.
   Log.d("log", "clear overlays : " + listOfOverlays.size());
  } else {
   Log.d("log", "empty overlays");
  }
 }

 private void showLocationName() {
  // 좌표 변환
  StringBuffer buff = new StringBuffer();
  try{
   List<Address> addrs = mGeoCoder.getFromLocation(latitude,longitude,1);
   
   for(Address addr : addrs){
    int index = addr.getMaxAddressLineIndex();
    for(int i=0; i <= index; ++i){
     buff.append(addr.getAddressLine(i));
     buff.append(" ");
    }
    buff.append("\n");
   }
  }catch(IOException e){
   Log.e("exp",e.toString());
  }
  
  mStatusText.setText(buff.toString());
  
 }

 public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu); //옵션 메뉴를 추가한다.
  menu.add(0,1,0,"지도");
  menu.add(0,2,0,"위성");
  menu.add(0,3,0,"검색");

  return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) { //옵션 메뉴 선택에 따른 액션을 취한다.
  case 1:
   mMap.setSatellite(false);
   return true;
  case 2:
   mMap.setSatellite(true);
   return true;
  case 3:
   intent = new Intent(MyPositionMap.this, AddressSearch.class);
   Log.i("log","=================="+intent.toString());
   Log.i("log","=================="+MyPositionMap.this.toString());
   Log.i("log","=================="+AddressSearch.class.toString());
   startActivity(intent);
     
   return true;
  }
  return false;
 }
 
 private GeoPoint getPoint(double lat, double lon) {
  return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0)));
 }

 @Override
 public boolean onDown(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log","1");
  return false;
 }

 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
   float velocityY) {
  // TODO Auto-generated method stub
  Log.i("log","2");
  return false;
 }

 @Override
 public void onLongPress(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log","3");
 }

 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
   float distanceY) {
  // TODO Auto-generated method stub
  Log.i("log","4");
  return false;
 }

 @Override
 public void onShowPress(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log","5");
  
 }

 @Override
 public boolean onSingleTapUp(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log","6");
  return false;
 }
 
 public void onTextInput(String textCtx){
  Log.i("log","+"+this.toString());
  Log.i("log","+"+MyActivity.class.toString());
  intent = new Intent(this,MyActivity.class);
  startActivity(intent);
 
 }
}


*************** 두번째 소스  : Marker.java
package com.medi.study;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Locale;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.location.Address;
import android.location.Geocoder;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.TextView;
import android.widget.Toast;
import com.medi.study.MyPositionMap;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

public class Marker extends ItemizedOverlay<OverlayItem> implements OnGestureListener,Serializable{

 private Context mContext;
 private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 private ArrayList<String> addr_nm = new ArrayList<String>();
 private GestureDetector mGestureDetector; 
 private GeoPoint markpoint = new GeoPoint(0,0);
 private MapView view;
 private Drawable marker;
 private boolean longTouch = false;

 MyPositionMap omap = new MyPositionMap();
 TextView mtext = null;

 public Marker(Drawable defaultMarker, Context context, MapView mapview) {
  super(boundCenterBottom(defaultMarker));
  // TODO Auto-generated constructor stub
  marker = defaultMarker;
  mContext = context;
  mGestureDetector = new GestureDetector(this);
  view = mapview;
  omap.intent = new Intent();
  //  populate();
  
  // 내 위치 주소를 배열에 먼저 담음.
  StringBuilder geoString = new StringBuilder();
  try {
   Geocoder goecoder = new Geocoder(mContext,Locale.getDefault());
   Address adr = goecoder.getFromLocation(37.491885,127.039289, 1).get(0);
   if (adr.getFeatureName() != null) geoString.append(adr.getFeatureName()).append(" ");
   if (adr.getThoroughfare() != null) geoString.append(adr.getThoroughfare()).append(" ");
   if (adr.getLocality() != null) geoString.append(adr.getLocality()).append(" ");
   if (adr.getCountryName() != null) geoString.append(adr.getCountryName());
   if (!"".equals(geoString.toString())) geoString.append("\n\n");
  }catch (Exception e) {
   geoString.append("exception 발생");
  }
  
  addAddr_nm(geoString.toString());
   
 }

 
 public void addOverlay(OverlayItem overlay){
  mOverlays.add(overlay);
  populate();
  view.invalidate(); 
 }
 
 public void addAddr_nm(String nm){
  addr_nm.add(nm);
  populate();
  view.invalidate(); 
 }

 protected boolean onTap(int index) {
  Log.i("log","---------------------::"+addr_nm.get(index));
  final String prm_nm = addr_nm.get(index);
  AlertDialog.Builder alert = new AlertDialog.Builder(mContext)
   .setIcon(R.drawable.icon)
   .setTitle("약속장소 전송")
   .setMessage("약속장소를 "+prm_nm+"로 정하시겠습니까?")
   .setPositiveButton("예",new DialogInterface.OnClickListener() {
    
    @Override
    public void onClick(DialogInterface dialog, int which) {
     omap.onTextInput(prm_nm);
     dialog.dismiss();
    }
   });
 
  alert.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
          dialog.dismiss();
          
      }
  });
  alert.show();

  return true;
 }
 
 public boolean onTap(GeoPoint p, MapView mapView) {
  // TODO Auto-generated method stub
  boolean tapped = super.onTap(p, mapView); 
  if(!tapped){
   markpoint = p;
  
   if(longTouch == true){
    
    Drawable logo = mContext.getResources().getDrawable(R.drawable.marker);
    StringBuilder geoString = new StringBuilder();
    double lat = (double)p.getLatitudeE6()/1000000;
    double lng = (double)p.getLongitudeE6()/1000000;
    try {
     Geocoder goecoder = new Geocoder(mContext,Locale.getDefault());
     Address adr = goecoder.getFromLocation(lat,lng, 1).get(0);
     if (adr.getFeatureName() != null) geoString.append(adr.getFeatureName()).append(" ");
     if (adr.getThoroughfare() != null) geoString.append(adr.getThoroughfare()).append(" ");
     if (adr.getLocality() != null) geoString.append(adr.getLocality()).append(" ");
     if (adr.getCountryName() != null) geoString.append(adr.getCountryName());
     if (!"".equals(geoString.toString())) geoString.append("\n\n");
     longTouch = false;
    }catch (Exception e) {
     geoString.append("위도 : ").append(p.getLatitudeE6()).append(" ,경도 : ").append(p.getLongitudeE6());
    }
    
    logo.setBounds(0, 0, logo.getIntrinsicWidth(), logo.getIntrinsicHeight());
    OverlayItem overlayitem = new OverlayItem(p, "안녕", "서울");
    addOverlay(overlayitem);
    addAddr_nm(geoString.toString());
    
    
    Toast.makeText(mContext, geoString.toString(),Toast.LENGTH_LONG).show();
   }
  }
  return true;
 }

 protected OverlayItem createItem(int i) {
  // TODO Auto-generated method stub
  Log.i("log", "createItem");
  return mOverlays.get(i);
 }
 
 public int size() {
  // TODO Auto-generated method stub
  Log.i("log", "size");
  return mOverlays.size(); 
 }

 public boolean onDown(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log", "onDown");
  return false;
 }
 
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  // TODO Auto-generated method stub
  Log.i("log", "onFling");
  return false;
 }

 public void onLongPress(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log", "onLongPress");
  Log.d("touch", "onShowPress");

 
  longTouch = true;
 
 }

 
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
  // TODO Auto-generated method stub
  Log.i("log", "onScroll");
  return false;
 }
 
 public void onShowPress(MotionEvent e) {
  // TODO Auto-generated method stub }
  Log.i("log", "onShowPress");
 }
 
 public boolean onSingleTapUp(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i("log", "onSingleTapUp");
  return false;
 
 }

 
 public boolean onTouchEvent(MotionEvent event, MapView mapView) {
 // TODO Auto-generated method stub 
  Log.i("log", "onTouchEvent");
  return mGestureDetector.onTouchEvent(event);
 }
}