안녕하세요

 GPS 좌표를 입력받아서

 화면에 있는 TextView에 뿌리는 기능을 구현하려고 합니다.


 그런데 GPS 신호가 수신되서 TextView에 setText로 쓰기만 해도 ( Post를 써서도 해봤는데 에러가 나네요..)

 SuperNotCalledException을 내네요.

 TextView에 쓰지 않고 파일에 쓰게 하면 아무런 에러도 나지 않습니다.

 
 소스 안에서 onPause, onDestroy, onResume .. 등은 전부다 첫줄에 super를 써서 구현을 했습니다.

 무엇이 문제인지 모르겠네요..
 

 에러 로그는 다음과 같습니다.

06-09 23:13:31.231: ERROR/AndroidRuntime(6115): android.app.SuperNotCalledException: Activity {com.android.foo/com.android.foo.top} did not call through to super.onPause()
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3327)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3279)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3256)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread.access$2400(ActivityThread.java:126)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1939)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.os.Looper.loop(Looper.java:123)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at android.app.ActivityThread.main(ActivityThread.java:4595)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at java.lang.reflect.Method.invokeNative(Native Method)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at java.lang.reflect.Method.invoke(Method.java:521)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-09 23:13:31.231: ERROR/AndroidRuntime(6115):     at dalvik.system.NativeStart.main(Native Method)


코드는 다음과 같습니다.


 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
             ...
     /*   Location Manager 등록 */     
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(true);
        criteria.setSpeedRequired(true);
        criteria.setCostAllowed(false);
      
        sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        sm.registerListener(this, SensorManager.SENSOR_ACCELEROMETER|SensorManager.SENSOR_ORIENTATION);
       
        lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        String bestProvider = lm.getBestProvider(criteria, true ); //AndroidManifest.xml 에서 권한 설정 필요
        Log.v("!!!!!!!!!!!!!!",bestProvider);
        lm.requestLocationUpdates(bestProvider, 1000, 10f, this);
   
        Location location = lm.getLastKnownLocation( bestProvider );
 
            ......       
    }

 public void onLocationChanged(Location location) {
  String longitude = String.valueOf(location.getLongitude());
  String latitude = String.valueOf(location.getLatitude());
  
  longitude = longitude.subSequence(0, 5).toString();
  latitude = latitude.subSequence(0,5).toString();
  position.setText(longitude+" ,"+latitude);
  speed.setText(String.valueOf(location.getSpeed()*3.6).split(".")[0]);
 }