【问题标题】:Android Studio OnInfoWindowClickListener not workingAndroid Studio OnInfoWindowClickListener 不工作
【发布时间】:2014-06-25 14:31:52
【问题描述】:

我正在使用 Android Studio 并使用地图活动构建了一个新应用。

我创建了一个新类并实现了 OnInfoWindowClickListener。下面是我的代码

公共类 testListener 扩展 Activity 实现 OnInfoWindowClickListener {

public testListener(GoogleMap mMap) {

    float blue = BitmapDescriptorFactory.HUE_AZURE;
    float red = BitmapDescriptorFactory.HUE_RED;


    mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(-26.055984, 28.084833))
                    .title("pick me")
                    .icon(BitmapDescriptorFactory.defaultMarker(blue))
    );


    mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(-26.058394, 28.078792))
                    .title("Hello World")
                    .icon(BitmapDescriptorFactory.defaultMarker(red))
    );
    mMap.setOnInfoWindowClickListener(this);

}

@Override
public void onInfoWindowClick(Marker marker) {
    try {
        Toast.makeText(testListener.this, "Click Info Window", Toast.LENGTH_LONG).show();
    } catch (Exception e){
        e.printStackTrace();
    }
}

}

为什么不显示 toast 消息?应用程序以不幸结束,已停止。

java.lang.NullPointerException
at android.widget.Toast.<init>(Toast.java:93)
at android.widget.Toast.makeText(Toast.java:241)
at com.cinema.movies1.southAfrica.onInfoWindowClick(testListener.java:46)
at com.google.android.gms.maps.GoogleMap$10.e(Unknown Source)
at com.google.android.gms.maps.internal.f$a.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:361)
at fno.a(SourceFile:82)
at lxs.b(Unknown Source)
at ltq.g(Unknown Source)
at ltq.a(Unknown Source)
at lnm.b(Unknown Source)
at loh.onSingleTapConfirmed(Unknown Source)
at lbl.onSingleTapConfirmed(Unknown Source)
at lbn.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)   

尝试捕获异常输出:

W/System.err﹕ java.lang.NullPointerException
W/System.err﹕ at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
W/System.err﹕ at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
W/System.err﹕ at android.widget.Toast.<init>(Toast.java:93)
W/System.err﹕ at android.widget.Toast.makeText(Toast.java:241)
W/System.err﹕ at com.cinema.movies1.southAfrica.onInfoWindowClick(testListener.java:47)
W/System.err﹕ at com.google.android.gms.maps.GoogleMap$10.e(Unknown Source)
W/System.err﹕ at com.google.android.gms.maps.internal.f$a.onTransact(Unknown Source)
W/System.err﹕ at android.os.Binder.transact(Binder.java:361)
W/System.err﹕ at fno.a(SourceFile:82)
W/System.err﹕ at lxs.b(Unknown Source)
W/System.err﹕ at ltq.g(Unknown Source)
W/System.err﹕ at ltq.a(Unknown Source)
W/System.err﹕ at lnm.b(Unknown Source)
W/System.err﹕ at loh.onSingleTapConfirmed(Unknown Source)
W/System.err﹕ at lbl.onSingleTapConfirmed(Unknown Source)
W/System.err﹕ at lbn.handleMessage(Unknown Source)
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

有什么想法吗?

【问题讨论】:

    标签: android map android-studio


    【解决方案1】:

    您是否添加了此代码:

    public class MapsActivity extends MapActivity {
    
        public void onCreate(Bundle savedInstanceState) {
            ...
            setUpMap();
        }
    
        private void setUpMap() {
            float blue = BitmapDescriptorFactory.HUE_AZURE;
            float red = BitmapDescriptorFactory.HUE_RED;
    
            mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(-26.055984, 28.084833))
                    .title("pick me")
                    .icon(BitmapDescriptorFactory.defaultMarker(blue))
            );
    
            mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(-26.058394, 28.078792))
                    .title("Hello World")
                    .icon(BitmapDescriptorFactory.defaultMarker(red))
            );
    
            mMap.setOnInfoWindowClickListener(this);
        }
    
        @Override
        public void onInfoWindowClick(Marker marker) {
            try {
                Toast.makeText(MapsActivity.this, "Click Info Window", Toast.LENGTH_LONG).show();
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    

    }

    【讨论】:

    • 我没有。是否需要在每个 addMarker 之后添加该行?它在哪里添加?
    • 不,当mMap初始化时,你应该只添加一次监听器。
    • 我添加了这行代码,但是当我点击窗口时我的应用程序停止运行。
    • 在 Toast 中更改上下文。如果你使用 Activity 或 getActivity() 如果你使用 fragment,则不要使用 getBaseContext()
    • 嗨佐兰。我的应用程序仍然崩溃。从上面的代码 sn-p 我应该得到这个问题吗?我在 toast 周围放了一个 try catch,并从异常中得到了上述输出。以后我不会使用 toast 我希望听众打开一个网页,但我认为使用 toast 进行测试会更容易。
    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 2013-06-04
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多