Fis*_*her 3 java android surfaceview toast
我想在SurfaceView类中使用Toast创建一条消息.使用此代码,我有以下例外...
Toast toast = Toast.makeText(this.getContext(), "Message", Toast.LENGTH_LONG);
toast.show();
Run Code Online (Sandbox Code Playgroud)
11-05 02:06:08.070:ERROR/AndroidRuntime(265):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
我怎样才能在SurfaceView中干杯?
您需要使用UI线程显示Toast.每当初始化SurfaceView时,请执行以下操作:
Handler handler;
private void initMe()
{
handler = new Handler();
}
Run Code Online (Sandbox Code Playgroud)
然后,无论你想在哪里做吐司,都要这样做:
handler.post(new Runnable(){
public void run(){
Toast.makeText(context, "Message", Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
您需要确保从UI线程调用"initMe".您可能正在从onCreate启动SurfaceView,它由UI线程调用,所以你会很好(我假设这是一个自定义的SufaceView扩展类?)