2012-11-01 3 views
1

맞춤 목록 어댑터가있는 앱이 있습니다. 목록은 이미지, 텍스트버튼의 세 부분으로 구성됩니다. 행을 클릭하면Android - 맞춤 목록 어댑터에서 행의 버튼을 클릭하면 MapActivity가 시작됩니다.

  • , 나는,
  • 을 활동 시작을하고 버튼을 클릭하면, 나는 시작하는 다른 활동을 원하지만 그것은 MapActivity입니다.
  • 두 활동 모두 인 텐트의 추가 정보를 통해 전달 된 정보를 가지고 있어야합니다.
  • 첫 번째 (행 클릭) 활동이 완벽하게 작동합니다.
  • 두 번째는 일반 활동을 시작할 때만 작동합니다.
  • MapActivity를 시작하려고하면 응용 프로그램이 충돌합니다.
  • 아래 코드는 사용자 지정 어댑터 클래스 내에 있으며 OnClick 메서드의 매개 변수/인수로받은보기는 단추입니다 (이것이 내가 getParent를 사용하는 이유입니다).

불명확 한 점이 있으면 알려주세요. 최선을 다해 답변 해 드리겠습니다. (번들

11-01 18:32:18.374: W/dalvikvm(14162): threadid=1: thread exiting with uncaught exception (group=0x4001d7d0) 
11-01 18:32:18.393: E/AndroidRuntime(14162): FATAL EXCEPTION: main 
11-01 18:32:18.393: E/AndroidRuntime(14162): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.turiston/com.example.turiston.GoogleMaps}: java.lang.NullPointerException 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.os.Looper.loop(Looper.java:123) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at java.lang.reflect.Method.invokeNative(Native Method) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at java.lang.reflect.Method.invoke(Method.java:521) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at dalvik.system.NativeStart.main(Native Method) 
11-01 18:32:18.393: E/AndroidRuntime(14162): Caused by: java.lang.NullPointerException 
11-01 18:32:18.393: E/AndroidRuntime(14162): at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:301) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at java.lang.Float.parseFloat(Float.java:291) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at com.example.turiston.GoogleMaps.onCreate(GoogleMaps.java:37) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-01 18:32:18.393: E/AndroidRuntime(14162): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-01 18:32:18.393: E/AndroidRuntime(14162): ... 11 more 

이것은 GoogleMaps.java

@Override 공개 무효에서 onCreate위한 한 OnCreate 방법 : 여기

@Override 
public void onClick(View view) 
{ 
    View parentView = (View) view.getParent(); 
    switch (view.getId()) 
    { 
     case R.id.boton_mapa_lugar: 

      Intent intent = new Intent("android.intent.action.GOOGLEMAPS"); 


      String lat = ((TextView) parentView.findViewById(R.id.lat_lugar)).getText() 
        .toString(); 
      String lon = ((TextView) parentView.findViewById(R.id.lon_lugar)).getText() 


      intent.putExtra(Lugares.DB_FIELD_LAT, lat); 
      intent.putExtra(Lugares.DB_FIELD_LON, lon); 

      parentView.getContext().startActivity(intent); 
      break; 
     default: 
      //Code for starting activity when row is clicked... 

    } 
} 


오류 로그 인 savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_google_maps);

+0

오류 로그를 제공해주십시오. –

+0

오류가 GoogleMaps.java 파일의 37 행에 발생합니다. GoogleMaps.java onCreate 메소드를 게시 할 수 있습니까? at com.example.turiston.GoogleMaps.onCreate (GoogleMaps.java:37) ' –

+0

일반 Activity에서 GoogleMaps.java를 열면 작동합니다. 그것이 어댑터 또는 목록보기와 관련이 있는지 궁금해. – Veris

답변

0

"android.intent.action.GOOGLEMAPS"을 작업 이름으로 사용하지 마십시오. 패키지 이름으로 패키지 이름을 만들어 다른 앱과 절대 충돌하지 않도록하십시오.

좌표가 GoogleMaps 활동에 도달하지 않는 것 같습니다. 활동을 시작하기 직전에 첫 번째 활동에 Log.d()를 넣고 "latitude = Float.parseFloat (lat_coordinate); 직전의 두 번째 활동에 Log.d()를 넣으십시오.

둘째로, 첫 번째 활동에서는 추가 이름에 상수를 사용하고 두 번째 활동에서는 매우 큰 오류가 발생하는 문자열 리터럴을 사용하고 있습니다. 항상 상수를 사용하십시오.

+0

감사합니다. 나는 그것을 마침내 고쳤다. 그것은 간단하면서도 쉽게 놓칠 수없는 실수였습니다. "lat_coordinates"와 "lon_coordinates"문자열은 모두 null이었습니다. 왜냐하면 내가 엑스트라를 전달하기 위해 사용했던 태그가 다르기 때문입니다. "위도"와 "경도"(상수 DB_FIELD_LAT와 DB_FIELD_LON)를 사용하고 있었고 다른 클래스 (GoogleMaps.java)를 담당하고 있던 팀원이 대신 "위도"와 "경도"를 사용했습니다. 다른 언어로 동일). – Veris

+0

방금 ​​내 코드에서 태그 이름을 GoogleMaps.java가받는 태그 이름으로 변경했습니다. String LAT = "Latitude"; 문자열 LON = "경도"; putExtras를 this로 변경했습니다. intent.putExtra (LAT, lat); intent.putExtra (LON, lon); 마지막으로 나는 다음과 같은 의도를 썼습니다. Intent intent = new Intent (parentView.getContext(), GoogleMaps.class); 감사합니다. P. 평판 때문에 내 자신의 질문에 아직 답할 수는 없지만 문제가 해결되었음을 알려 드리고자합니다. – Veris

+0

내가 말했듯이, 상수는 당신의 친구입니다 ;-) – rgrocha