Android 如何更改pubnub subscribe回调中togglebutton的状态

Android 如何更改pubnub subscribe回调中togglebutton的状态,android,pubnub,Android,Pubnub,如果消息等于togglebutton.setchecked(true)预设字符串,我想在pubnub subscribe收到成功回调时更改toggle按钮的状态 否则它会举杯并说连接有问题 如何在异步进程中实现这一点 更新: 在尝试了亨利的建议之后: try { pubnub.subscribe("reply", new Callback() { public void successCallback(String channel, Object message) {

如果消息等于togglebutton.setchecked(true)预设字符串,我想在pubnub subscribe收到成功回调时更改toggle按钮的状态 否则它会举杯并说连接有问题 如何在异步进程中实现这一点 更新:

在尝试了亨利的建议之后:

try {
    pubnub.subscribe("reply", new Callback() {
        public void successCallback(String channel, Object message) {
            System.out.println(message);

            //Match your String Here and set Toggle Btn status here
            if(message.toString().equals("RL1:1")){
                //Set True
                toggleButton1.setChecked(true); 
            }
            toggleButton1.setBackgroundResource(R.drawable.light100);
        }

        public void errorCallback(String channel, PubnubError error) {
            System.out.println(error.getErrorString());
        }
    });
} 
catch (PubnubException e) {
    e.printStackTrace();
}
我发送消息时收到以下日志cat(RL1:1):


我没有使用Pubnub,但您可以在代码中这样做: 注意:我假设这个回调在主线程上

在你的活动课上:

private ToggleButton  mBtnToggle;

/* Subscribe to the demo_tutorial channel */
try {
    pubnub.subscribe("demo_tutorial", new Callback() {
        public void successCallback(String channel, Object message) {
            System.out.println(message);
            //Match your String Here and set Toggle Btn status here 
            if(message.str.equal(strData)){
                //Set True
                mBtnToggle.setChecked(true)
            }
        }

        public void errorCallback(String channel, PubnubError error) {
            System.out.println(error.getErrorString());
        }
    });
} 
catch (PubnubException e) {
    e.printStackTrace();
}

以下是工作代码:

try {
    pubnub.subscribe("reply", new Callback() {
        public void successCallback(String channel, Object message) {
            System.out.println(message);
            msg = message.toString();
            //Match your String Here and set Toggle Btn status here
            lighting.this.runOnUiThread(new Runnable(){
                @Override
                public void run(){
                    if(msg.equals("RL1:1")){
                        //Set True
                        toggleButton1.setChecked(true);
                        toggleButton1.setBackgroundResource(R.drawable.light100);
                    }
                }
            });
        };

        public void errorCallback(String channel, PubnubError error) {
            System.out.println(error.getErrorString());
        }

    });
}
catch (PubnubException e) {
    e.printStackTrace();
}

分享pubnub subdcribe CallBack的一些代码片段Hello herry,感谢您的回复我尝试了上述代码,但应用程序已停止工作,并收到以下日志:这是由于回调不在主线程上使用
处理程序
runOnUiThread
try {
    pubnub.subscribe("reply", new Callback() {
        public void successCallback(String channel, Object message) {
            System.out.println(message);
            msg = message.toString();
            //Match your String Here and set Toggle Btn status here
            lighting.this.runOnUiThread(new Runnable(){
                @Override
                public void run(){
                    if(msg.equals("RL1:1")){
                        //Set True
                        toggleButton1.setChecked(true);
                        toggleButton1.setBackgroundResource(R.drawable.light100);
                    }
                }
            });
        };

        public void errorCallback(String channel, PubnubError error) {
            System.out.println(error.getErrorString());
        }

    });
}
catch (PubnubException e) {
    e.printStackTrace();
}