0
我正在編寫Google Maps應用程序,並試圖實現將地圖類型從普通地圖更改爲混合地圖的按鈕。聲明ImageButton以在函數中使用
我宣佈我的按鈕在OnCreate實例:
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(); :
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;
}
}
現在的問題,我不能使用的ImageButton「changeBtn」中的onCreate實例外,當我在我的程序代碼頂部聲明按鈕,它會導致程序崩潰。有沒有人有解決這個問題?當我嘗試在類級別聲明它
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
,代碼:類級別聲明時
logcat的
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);
爲什麼會崩潰?你可以發佈日誌嗎? –
當我在課堂上聲明按鈕級別時,它會崩潰並給出這個logcat –
對不起,我是gona發表評論,但我搞砸了,現在它在那裏。 –