Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
Android 如何在SurfaceView的线程中调用父活动的方法?_Android_Multithreading - Fatal编程技术网

Android 如何在SurfaceView的线程中调用父活动的方法?

Android 如何在SurfaceView的线程中调用父活动的方法?,android,multithreading,Android,Multithreading,给你一些背景: 我有一个活动,该活动具有已创建的自定义曲面视图。这个surfaceview有一个运行游戏的线程。如果用户在游戏中输了,我想调用一个lose()方法,该方法在实例化surfaceview的活动中定义 我该怎么做呢 到目前为止,我有: MyActivity activity = (MyActivity)context 然后在surfaceview中的线程中,我调用: activity.lose() 但我得到了一个错误: java.lang.RuntimeException: Ca

给你一些背景:

我有一个活动,该活动具有已创建的自定义曲面视图。这个surfaceview有一个运行游戏的线程。如果用户在游戏中输了,我想调用一个
lose()
方法,该方法在实例化surfaceview的活动中定义

我该怎么做呢

到目前为止,我有:

MyActivity activity = (MyActivity)context
然后在surfaceview中的线程中,我调用:

activity.lose()
但我得到了一个错误:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我知道这个调用是在一个独立的线程上进行的,而不是在活动中的侦听器上,但是我如何才能通知这个活动一个用户已经输掉了游戏

感谢您的帮助。

可能是您的lose()方法调用了触摸式UI操作,显示它

我会抛出这个错误

您可以通过以下方式解决此问题:

Looper.prepare();
activity.close();

似乎是广播接收机的方式,试过了吗?