我创造了一些活动和不同的场景。现在我想使用场景管理器将它们全部合并。 但我遇到了问题 java.lang.RuntimeException:在我使用处理程序时,无法在未调用Looper.prepare()的线程内创建处理程序。 任何人都可以为我提供快速解决方案吗? 应该使用哪种机制从分离的类/活动中创建场景管理器?
具体来说:我不能在嵌套类中使用处理程序。很抱歉这个问题变成了Java问题,而不仅仅是Andengine。
public class MainActivity extends BaseGameActivity
{
public static class SceneManager1 {
public static Handler handlerAchievementOwl = new Handler(){
@Override
public void handleMessage(Message msg){
Log.i("Peakpeak","Peak inside Handler");
}
};
}
}
答案 0 :(得分:2)
试用此代码:
public class MainActivity extends BaseGameActivity
{
private static Activity thisActivity;
protected void onCreate(){
super.onCreate();
thisActivity = this;
}
public static class SceneManager1 {
public static Handler handlerAchievementOwl = new Handler(){
@Override
public void handleMessage(Message msg){
Log.i("Peakpeak", "Peak inside Handler");
thisActivity .runOnUpdateThread(new Runnable() {
@Override
public void run() {
//do your magic
}
});
}
};
}
答案 1 :(得分:0)
由于您在静态课程中需要context
(我不确定您的MainActivity
是否有context
,但我确信它确实在某处),您可以执行以下操作:
public class MainActivity extends BaseGameActivity
{
private static Context context;
protected void onCreate(){
super.onCreate();
MainActivity.context = getApplicationContext();
}
public static class SceneManager1 {
public static Handler handlerAchievementOwl = new Handler(){
@Override
public void handleMessage(Message msg){
Log.i("Peakpeak", "Peak inside Handler");
((Activity)MainActivity.context).runOnUiThread(new Runnable() {
@Override
public void run() {
//do your magic
}
});
}
};
}
}