Ceci est mon activité de base qui étend la classe activity
. Je fais mes autres activités étendent cette classe de base:Afficher la boîte de dialogue lorsque l'utilisateur est hors ligne et la rejeter lorsque l'utilisateur est en ligne (avec broadcastReceiver)
public abstract class Base extends Activity {
private BroadcastReceiver netStateReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
}
protected abstract int getLayoutResourceId();
@Override
protected void onPause() {
if (netStateReceiver != null) {
unregisterReceiver(netStateReceiver);
netStateReceiver = null;
}
super.onPause();
}
@Override
protected void onResume() {
if (netStateReceiver == null) {
netStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, Intent intent) {
final Dialog offline = new Dialog(context, android.R.style.Theme_Light);
//A change occurred in connection state. Check whether user has been become online or offline:
if (!CheckNet()) {
//User became offline (show offline dialog):
offline.setContentView(R.layout.activity_offline);
offline.setTitle("offline");
offline.getWindow().setBackgroundDrawableResource(R.color.transparent);
offline.show();
final Button retry = (Button) offline.findViewById(R.id.button6);
retry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (CheckNet()) {
offline.dismiss();
}
}
});
}
else {
//User became online (dismiss offline dialog):
if (offline.isShowing()) {
offline.dismiss();
}
}
}
};
registerReceiver(netStateReceiver, new IntentFilter(Values.CONNECTIVITY_RECEIVER_ACTION));
}
super.onResume();
}
private boolean CheckNet() {
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
return (activeNetwork != null && activeNetwork.isConnectedOrConnecting());
}
}
Comme vous le voyez dans le code que j'ai enregistré un récepteur pour vérifier l'état de la connectivité.
Je veux quand l'utilisateur est hors ligne une boîte de dialogue soit montrée à l'utilisateur et l'avise qu'il est déconnecté et devrait devenir en ligne pour continuer. Cette partie fonctionne bien.
Je souhaite également que cette boîte de dialogue s'affiche et qu'au moment où l'utilisateur se connecte, cette boîte de dialogue soit fermée, mais cette partie ne fonctionne pas et la boîte de dialogue reste à l'écran.
Quel est le problème, comment puis-je fermer la boîte de dialogue?
cela fonctionne correctement, merci. – Masoud