Andengine场景管理器和处理程序

时间:2013-07-24 11:51:18

标签: java android handler andengine

我创造了一些活动和不同的场景。现在我想使用场景管理器将它们全部合并。 但我遇到了问题         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");
            }

    };
   }

   }

2 个答案:

答案 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
                    }
                });
            }

        };
    }

}