2013-01-10 2 views
0

Google지도 앱을 프로그래밍 중이며 맵 유형을 일반에서 하이브리드로 변경하는 이미지 버튼을 구현하려고합니다.) (ImageButton을 함수에 사용하도록 선언하십시오.

ImageButton changeBtn =(ImageButton) findViewById(R.id.changeBtn); 
    changeBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      changeMapType(); 
     } 
    }); 

을 그리고 여기 내 기능 changeMapType이다;

전에서 onCreate 인스턴스 내 버튼을 선언 :

private void changeMapType(){ 
    if(MapTypeInt == 0){ 
     mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     changeBtn.setBackgroundResource(R.drawable.satellite); 
     MapTypeInt = 1; 
    } else if (MapTypeInt == 1) { 
     mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     changeBtn.setBackgroundResource(R.drawable.normal_map); 
     MapTypeInt = 0; 
    } 
} 

지금 문제에, 나는에서 onCreate 인스턴스의 외부하여 ImageButton "changeBtn"를 사용하지 못할, 그리고 난 내 프로그램 코드의 상단에있는 버튼을 선언 할 때 충돌이 프로그램을 발생합니다. 누구든지 이것에 대한 해결책을 가지고 있습니까?

클래스 레벨에서 선언 로그 캣 :

01-10 10:22:00.555: E/AndroidRuntime(2872): FATAL EXCEPTION: main 
01-10 10:22:00.555: E/AndroidRuntime(2872): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.androidbasic12/com.example.androidbasic12.map}: java.lang.NullPointerException 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.os.Looper.loop(Looper.java:137) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at dalvik.system.NativeStart.main(Native Method) 
01-10 10:22:00.555: E/AndroidRuntime(2872): Caused by: java.lang.NullPointerException 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.Activity.findViewById(Activity.java:1839) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at com.example.androidbasic12.map.<init>(map.java:24) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at java.lang.Class.newInstanceImpl(Native Method) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at java.lang.Class.newInstance(Class.java:1319) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
01-10 10:22:00.555: E/AndroidRuntime(2872):  ... 11 more 

그리고 코드는 내가 클래스 레벨에서 선언 할 때 : 당신이에서 onCreate 외부 버튼을 선언하면

public class map extends FragmentActivity{ 
private static final LatLng SYDNEY = new LatLng(-33.88,151.21); 
public static final LatLng sala = new LatLng(59.91602, 16.594108); 
int travel = 0; 
int MapTypeInt = 0; 
private GoogleMap mMap; 
GoogleMapOptions options = new GoogleMapOptions(); 
ImageButton changeBtn =(ImageButton) findViewById(R.id.changeBtn); 
+0

왜 충돌이 발생합니까? 로그를 게시 할 수 있습니까? –

+0

클래스 레벨에서 버튼을 선언하면 충돌이 발생하고이 logcat이 발생합니다. –

+0

죄송합니다. 댓글에 게시해야하지만 지금은 엉망입니다. –

답변

0

, 당신이 그것을 할당 할 수 없습니다 . 다음과 같이 onCreate에 할당해야합니다.

changeBtn =(ImageButton) findViewById(R.id.changeBtn); 

그런 다음이 함수에서 changeBtn을 사용할 수 있습니다. findViewById는 setContentView 전에 사용하면 안되므로 사용하지 않아야합니다.

관련 문제