blossomvy
blossomvy

Reputation: 55

HandleMessage Failed to Pass Object

I'm receiving data through a Bluetooth Service and would like to pass it to MainActivity with handleMessage, MainActivity has received the message but the object was "null"...Can anyone advise? Thanks in advance!

In Bluetooth Service: (the variable data is a String.) mHandler.obtainMessage(MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L, data).sendToTarget();

In MainActivity: problem- String data here is null, while I have double checked the data sent from bluetooth service is not null.

D/Main Activity: data at handler: null

        mHandler = new Handler() {
        @Override
        public void handleMessage(@NonNull final Message msg) {
            switch ((msg.what)) {                
                case MessageConstants.MESSAGE_ADD_ENTRY_L:
                    try {
                        Log.d(TAG, "handler add entry");
                        Thread dataParseThread = new Thread(new Runnable() {
                            @Override
                            public void run() {
                                String data = (String) msg.obj;
                                Log.d(TAG, "data at handler: " + data);
                                SensorData.parseDataL(data))
                                exportData.logEntryL();                                  
                            }
                        });
                        dataParseThread.start();
                    } catch (Exception e) {
                        Log.d(TAG, "handler went wrong: " + e);
                    }
                    break;
            }
        }
    };

Upvotes: 1

Views: 257

Answers (1)

Rajan Kali
Rajan Kali

Reputation: 12953

While using sendToTarget() make sure your target is pointing to your mHandler as in

Message message = new Message();
message.what = MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L;
message.setData(data);
message.setTarget(mHandler);
message.sendToTarget();

UPDATE

you can still use your existing approach to get data as Object, but at some point you need to set the Target to Message so it can post

Message message = mHandler.obtainMessage(MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L, data);
message.setTarget(mHandler);
message.sendToTarget();

Upvotes: 1

Related Questions