首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Andengine&Thinkgear更新线程空指针

Andengine&Thinkgear更新线程空指针
EN

Stack Overflow用户
提问于 2015-03-26 00:07:17
回答 1查看 153关注 0票数 0

我正在构建一个游戏,当耳机连接到GameScene时,它会尝试连接到耳机。该项目有一个主要活动(称为活动)和8个独立的课程(4个场景,扩展basecene,baseScene课程,ResourcesManager和SceneManager);

唯一的办法是,如果我有所有的活动类的TG代码,但我需要它在GameScene.java中,因为处理程序将设置速度,对象的大小等。这个错误要了我的命

代码语言:javascript
复制
03-25 16:56:04.865  30101-30160/g5.mindwave E/AndroidRuntime﹕ FATAL EXCEPTION: UpdateThread
Process: g5.mindwave, PID: 30101
java.lang.NullPointerException
        at g5.mindwave.Activity.connect(Activity.java:57)
        at g5.mindwave.GameScene.ThinkGear(GameScene.java:142)
        at g5.mindwave.GameScene.createScene(GameScene.java:123)
        at g5.mindwave.BaseScene.<init>(BaseScene.java:42)
        at g5.mindwave.GameScene.<init>(GameScene.java:34)
        at g5.mindwave.SceneManager$1.onTimePassed(SceneManager.java:130)
        at org.andengine.engine.handler.timer.TimerHandler.onUpdate(TimerHandler.java:94)
        at org.andengine.engine.handler.UpdateHandlerList.onUpdate(UpdateHandlerList.java:47)
        at org.andengine.engine.Engine.onUpdateUpdateHandlers(Engine.java:618)
        at org.andengine.engine.Engine.onUpdate(Engine.java:605)
        at org.andengine.engine.LimitedFPSEngine.onUpdate(LimitedFPSEngine.java:57)
        at org.andengine.engine.Engine.onTickUpdate(Engine.java:568)
        at org.andengine.engine.Engine$UpdateThread.run(Engine.java:858)

Activity.java:

代码语言:javascript
复制
public void connect(TGDevice tg)

{tg.connect(true);}

GameScene.java:

代码语言:javascript
复制
 @Override
public void createScene() {
engine.registerUpdateHandler(new FPSLogger());
    engine.runOnUpdateThread(new Runnable() {
                                 @Override
                                 public void run() {
                                     handler = new Handler(Looper.getMainLooper()) {

                                         @Override
                                         public void handleMessage(Message msg) {
                                             switch (msg.what) {
                                                 case TGDevice.MSG_STATE_CHANGE:
                                                     Log.v("HelloEEG","State changed");
                                                     switch (msg.arg1) {
                                                         case TGDevice.STATE_IDLE: break;
                                                         case TGDevice.STATE_CONNECTING:
                                                             Log.v("HelloEEG","Connecting");
                                                             Toast connecting = Toast.makeText(activity.getApplicationContext(),"Connecting", Toast.LENGTH_SHORT);
                                                             connecting.show();
                                                             break;
                                                         case TGDevice.STATE_CONNECTED: tgDevice.start();
                                                             Log.v("HelloEEG","Connected");
                                                             //TODO Start the wheels spinning, timer, etc.

                                                             Toast connected = Toast.makeText(activity.getApplicationContext(),"Connected to "+tgDevice.getConnectedDevice().getName(), Toast.LENGTH_SHORT);
                                                             connected.show();
                                                             break;
                                                         case TGDevice.STATE_DISCONNECTED:
                                                             Toast disconnected = Toast.makeText(activity.getApplicationContext(),"Disconnected", Toast.LENGTH_SHORT);
                                                             disconnected.show();
                                                             break;
                                                         case TGDevice.STATE_NOT_FOUND: case TGDevice.STATE_NOT_PAIRED: default:
                                                             break;

                                                     } break; case TGDevice.MSG_POOR_SIGNAL:
                                                     // Log.v("HelloEEG", "PoorSignal: " + msg.arg1);

                                                 case TGDevice.MSG_ATTENTION:
                                                     Log.v("HelloEEG", "Attention: " + msg.arg1);


                                                     break;
                                                 case TGDevice.MSG_BLINK:
                                                     //Log.v("HelloEEG", "Blinks:" + msg.arg1);
                                                     break;
                                                 case TGDevice.MSG_MEDITATION:
                                                     Log.v("HelloEEG", "Meditation:" +msg.arg1);
                                                     rj2.setMotorSpeed(msg.arg1);
                                                     //  progressMeditation.setProgress(msg.arg1);
                                                     break;
                                                 case TGDevice.MSG_RAW_DATA:
                                                     // int rawValue = msg.arg1;
                                                     // Log.v("HelloEEG", "Raw Data: "+ rawValue);
                                                     break;
                                                 case TGDevice.MSG_EEG_POWER:

                                                     TGEegPower ep = (TGEegPower)msg.obj;
                                                     //Log.v("HelloEEG", "Delta: " + ep.delta); default:
                                                     break;
                                             }
                                         }
                                     };
                                 }
                             }
    );

    CreateWorld();
    createCar();
    SetCamera();
    ThinkGear();

}
public void ThinkGear() {

       engine.runOnUpdateThread(new Runnable() {
           @Override
           public void run() {
               if (resourcesManager.btAdapter != null) {
                   Log.v("test",resourcesManager.btAdapter.getName());
                   tgDevice = new TGDevice(btAdapter, handler);
                   Log.v("tst", tgDevice.toString());
             //  tgDevice.connect(true);
                   Log.v("Device", "" + tgDevice.getState());
           }
       }

       });

resourcesManager.activity.connect(tgDevice);
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-26 00:12:27

我的愚蠢是没有限制的,我试着从两个不同的主题连接,下面是我是如何做到的:

GameScene.java:

代码语言:javascript
复制
 public void createScene() {
engine.registerUpdateHandler(new FPSLogger());
    engine.runOnUpdateThread(new Runnable() {
                                 @Override
                                 public void run() {

                                     handler = new Handler(Looper.getMainLooper()) {

                                         @Override
                                         public void handleMessage(Message msg) {
                                             switch (msg.what) {
                                                 case TGDevice.MSG_STATE_CHANGE:
                                                     Log.v("HelloEEG","State changed");
                                                     switch (msg.arg1) {
                                                         case TGDevice.STATE_IDLE: break;
                                                         case TGDevice.STATE_CONNECTING:
                                                             Log.v("HelloEEG","Connecting");
                                                             Toast connecting = Toast.makeText(activity.getApplicationContext(),"Connecting", Toast.LENGTH_SHORT);
                                                             connecting.show();
                                                             break;
                                                         case TGDevice.STATE_CONNECTED: tgDevice.start();
                                                             Log.v("HelloEEG","Connected");
                                                             //TODO Start the wheels spinning, timer, etc.

                                                             Toast connected = Toast.makeText(activity.getApplicationContext(),"Connected to "+tgDevice.getConnectedDevice().getName(), Toast.LENGTH_SHORT);
                                                             connected.show();
                                                             break;
                                                         case TGDevice.STATE_DISCONNECTED:
                                                             Toast disconnected = Toast.makeText(activity.getApplicationContext(),"Disconnected", Toast.LENGTH_SHORT);
                                                             disconnected.show();
                                                             break;
                                                         case TGDevice.STATE_NOT_FOUND: case TGDevice.STATE_NOT_PAIRED: default:
                                                             break;

                                                     } break; case TGDevice.MSG_POOR_SIGNAL:
                                                     // Log.v("HelloEEG", "PoorSignal: " + msg.arg1);

                                                 case TGDevice.MSG_ATTENTION:
                                                     Log.v("HelloEEG", "Attention: " + msg.arg1);


                                                     break;
                                                 case TGDevice.MSG_BLINK:
                                                     //Log.v("HelloEEG", "Blinks:" + msg.arg1);
                                                     break;
                                                 case TGDevice.MSG_MEDITATION:
                                                     Log.v("HelloEEG", "Meditation:" +msg.arg1);
                                                     rj2.setMotorSpeed(msg.arg1);
                                                     //  progressMeditation.setProgress(msg.arg1);
                                                     break;
                                                 case TGDevice.MSG_RAW_DATA:
                                                     // int rawValue = msg.arg1;
                                                     // Log.v("HelloEEG", "Raw Data: "+ rawValue);
                                                     break;
                                                 case TGDevice.MSG_EEG_POWER:

                                                     TGEegPower ep = (TGEegPower)msg.obj;
                                                     //Log.v("HelloEEG", "Delta: " + ep.delta); default:
                                                     break;
                                             }
                                         }
                                     };
                                     if (resourcesManager.btAdapter != null) {
                                         Log.v("test",resourcesManager.btAdapter.getName());
                                         tgDevice = new TGDevice(btAdapter, handler);
                                         Log.v("tst", tgDevice.toString());
                                           tgDevice.connect(true);
                                         Log.v("Device", "" + tgDevice.getState());
                                     }
                                 }
                             }
    );

    CreateWorld();
    createCar();
    SetCamera();
   // ThinkGear();

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29260768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档