Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android谷歌地图,移动标记崩溃应用程序_Java_Google Maps_Android Studio - Fatal编程技术网

Java Android谷歌地图,移动标记崩溃应用程序

Java Android谷歌地图,移动标记崩溃应用程序,java,google-maps,android-studio,Java,Google Maps,Android Studio,这是代码“MapsActiity.java”: /* 一旦可用,就可以操纵贴图。 当映射准备好使用时,将触发此回调。 这是我们可以添加标记或线条、添加侦听器或移动摄影机的地方。在这种情况下,, 我们只是在澳大利亚悉尼附近加了一个标记。 如果设备上未安装Google Play服务,系统将提示用户安装 它位于SupportMapFragment中。此方法仅在用户完成后触发 已安装Google Play服务并返回应用程序。 */ tryes执行此行后,应用程序立即崩溃:

这是代码“MapsActiity.java”:

/* 一旦可用,就可以操纵贴图。 当映射准备好使用时,将触发此回调。 这是我们可以添加标记或线条、添加侦听器或移动摄影机的地方。在这种情况下,, 我们只是在澳大利亚悉尼附近加了一个标记。 如果设备上未安装Google Play服务,系统将提示用户安装 它位于SupportMapFragment中。此方法仅在用户完成后触发 已安装Google Play服务并返回应用程序。 */

tryes执行此行后,应用程序立即崩溃:

                    marker.setPosition(NextPosition);
谁能告诉我哪里出了问题?
谢谢大家!

发生崩溃是因为您没有在UIThread中运行此代码

您可以使用
runOnUiThread
并为
Runnable()
实现第二个必需的
run()
方法来处理计时器任务

尝试将
myTimer()
中的代码替换为以下代码:

public void myTimer() {
    Timer t = new Timer();

    t.schedule(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run () {
                    if (mMap != null) {

                        x = x + 1;
                        y = y + 1;

                        NextPosition = new LatLng(x, y);

                        marker.setPosition(NextPosition);
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(NextPosition));
                        mMap.animateCamera(CameraUpdateFactory.zoomTo(16f));
                    }
                }
            });
        }
    }, 2000, 1000);
}
另请参见相关线程:


希望这有帮助

如果应用程序崩溃,你应该在某个地方有一个stacktrace。把这个加到你的问题上。另一个节点,根据
Java代码约定
变量名称应以小写字符开头。E/BufferQueueProducer:[]无法获取hwsched服务D/mali\u winsys:EGLint新窗口\u表面(egl\u winsys\u显示*,void*,EGLSurface,EGLConfig,egl\u winsys\u表面**,egl\u颜色\u缓冲区\u格式*,EGLBoolean)返回0x3000 W/InputMethodManager:startInputReason=5 I/zygote64:Do full code cache collection,code=117KB,data=106KB I/zygote64:code cache collection后,code=114KB,data=72KB A/libc:Fatal signal 11(SIGSEGV),code 1,tid 21897中的fault addr 0xc(Timer-0)与目标VM断开连接,地址:“localhost:8602”,传输:'socket'A/libc:Fatal signal 11(SIGSEGV),代码1,tid 21897(Timer-0)中的fault addr 0xc与目标VM断开连接,地址:'localhost:8602',传输:'socket'E/AndroidRuntime:Fatal EXCEPTION:Timer-0进程:com.example.myapplicationgoogelmaps,PID:22668 com.google.maps.api.android.lib6.common.apiexception.d:不在com.google.maps.api.android.lib6.common.l.b(:com.google.android.gms.dynamite)的主线程上_mapsdynamite@18382051@18.3.82(04040408-260264002):6)您应该编辑您的问题并在那里添加
stacktrace
,而不是将其发布到评论中。很难在评论中读到它,但它看起来并不完整?
                    marker.setPosition(NextPosition);
public void myTimer() {
    Timer t = new Timer();

    t.schedule(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run () {
                    if (mMap != null) {

                        x = x + 1;
                        y = y + 1;

                        NextPosition = new LatLng(x, y);

                        marker.setPosition(NextPosition);
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(NextPosition));
                        mMap.animateCamera(CameraUpdateFactory.zoomTo(16f));
                    }
                }
            });
        }
    }, 2000, 1000);
}