Android更改ToggleButton状态 - TextView或其他android.widget

时间:2013-03-28 08:38:48

标签: android android-widget

我正在使用GCM并且在调用我的服务器之后在onRegistered方法中我要更改AppSettings Activity中toggleButton的状态

//called when i click the toggleButton
    public void onPushStateButtonClicked(View view) {
                // controllo se il bottone è su on
                boolean on = ((ToggleButton) view).isChecked();
                PushClientService p = new PushClientService();
                if (on) {
                    savePushStateButton(true);
                    // se il bottone  in impostazioni è settato ad on registro il dispositivo
                    p.pushService(this);
                }else if(!on) {
                    savePushStateButton(false);
                    // se il bottone  in impostazioni è settato ad on cancello il dispositivo
                    //nel caso sia il primo accesso essendo il bottone a false di default preveniamo l'eccezione
                    try{    
                        GCMRegistrar.unregister(this);
                    }catch(IllegalArgumentException iAE){
                        Log.e("Errore:","stai cercando di cancellate un device non registrato");
                    }
                }
            }

在另一个类GCMIntentService

protected void onRegistered(Context context, String registrationId) {
            Log.i(TAG, "Device registered: regId = " + registrationId);
            Log.d("onRegistered", getString(R.string.gcm_registered));
            boolean myServerRegistration=ServerUtilities.customRegistration(context, registrationId);
            if(!myServerRegistration){
                // Errore sulla registrazione sul server, deregistro il device
                GCMRegistrar.unregister(context);
                **//change the state of the ToggleButton**

            }
        }

我想通过另一个简单的类将其值设置为false,其中我有上下文,这是可能的吗?或者我可以刷新活动吗?

响应!

1 个答案:

答案 0 :(得分:1)

我已经解决了自己 这是活动中的代码

// Set AppSettings object into GCMIntentService
        GCMIntentService.setActivityMain(AppSettings.this);

,这是在GCMIntent类中:

protected static AppSettings activityMain;

public static void setActivityMain(AppSettings a){
        activityMain = a;
    }
// run on UI thread
public void changePushStateButtonStatus(){

    activityMain.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            activityMain.pushStateButton.setChecked(false);    
        }
    });
}


protected void onRegistered(Context context, String registrationId) {
        Log.i(TAG, "Device registered: regId = " + registrationId);
        Log.d("onRegistered", getString(R.string.gcm_registered));
        boolean myServerRegistration=ServerUtilities.customRegistration(context, registrationId);
        if(!myServerRegistration){
            // Error on our server registration, unregister the device
            GCMRegistrar.unregister(context);
            // Save on sharedPreference the button status
            savePushStateButton(false);
            // Start a thread on UI to change the button status
            changePushStateButtonStatus();
        }
    }