0

J'utilise de greenrobot:eventbus dans mon projet:Android - GreenRobot EventBus dans android?

compile 'org.greenrobot:eventbus:3.0.0' 

Problème:

J'utilise de EventBus pour GPS comme ci-dessous:

public class ConditionGPS { 
    public static void statusCheck(Activity activity) { 
     final LocationManager manager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE); 
     if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      buildAlertMessageNoGps(activity); 
     } else if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      EventGPS event = new EventGPS(); 
      event.setGPSMessage(true); 
      EventBus.getDefault().post(event); 
     } 
    } 

    private static void buildAlertMessageNoGps(final Activity activity) { 
     final AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
     builder.setMessage(activity.getString(R.string.GPS)) 
       .setCancelable(false) 
       .setPositiveButton(activity.getString(R.string.Yes), new DialogInterface.OnClickListener() { 
        public void onClick(final DialogInterface dialog, final int id) { 
         activity.startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
        } 
       }) 
       .setNegativeButton(activity.getString(R.string.No), new DialogInterface.OnClickListener() { 
        public void onClick(final DialogInterface dialog, final int id) { 
         dialog.cancel(); 
         EventGPS event = new EventGPS(); 
         event.setGPSMessage(false); 
         EventBus.getDefault().post(event); 
        } 
       }); 
     final AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
} 

expliquer brièvement:

En mon setNegativeButton du dialogue d'alerte EventBus bon travail, mais j'ai un problème dans cette section:

... 
... 
else if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
       EventGPS event = new EventGPS(); 
       event.setGPSMessage(true); 
       EventBus.getDefault().post(event); 
      } 

Je ne peux pas tout message dans mon activity .Ici est mon activity:

@Override 
protected void onResume() { 
    super.onResume(); 
    if (!EventBus.getDefault().isRegistered(this)) { 
     EventBus.getDefault().register(this); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (EventBus.getDefault().isRegistered(this)) { 
     EventBus.getDefault().unregister(this); 
    } 
} 

@Subscribe 
public void onEvent(EventGPS eventGps) { 
    boolean message = eventGps.getGPSMessage(); 
    if (!message) { 
     txtMessage.setVisibility(View.VISIBLE); 
     txtMessage.setText(getString(R.string.Should)); 
    }else if (message){ 
     //****HERE I CAN'T GET ANY MESSAGE****// 
     initViews(key); 
    } 
} 

Et voici mon EventGPS:

public class EventGPS { 
    private boolean GPSMessage; 

    public boolean getGPSMessage() { 
     return GPSMessage; 
    } 

    public void setGPSMessage(boolean GPSMessage) { 
     this.GPSMessage = GPSMessage; 
    } 
} 

Répondre

1

Vous devez enregistrer votre activité en tant que destinataire.

@Override 
public void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
} 
+0

@ Denny Weinberg. Mon problème n'est pas ici. –

+0

OK, je vous vois édité votre question ... –

1

Inscrivez votre activité, mais assurez-vous que vous n'êtes pas déjà inscrit ou vous obtiendrez une exception.

@Override 
public void onStart() { 
    super.onStart(); 
    if(!EventBus.getDefault().isRegistered(this)) 
    { 
     EventBus.getDefault().register(this); 
    } 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
}