これはクラスactivity
を拡張する基本アクティビティです。ユーザがオフラインになったときにダイアログを表示し、ユーザがオンラインになったときに閉じる(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());
}
}
あなたは、私が接続状態をチェックするための受信機を登録しているコードで見たよう:私は私の他の活動は、この基本クラスを拡張します。
ユーザーがオフラインになったときにユーザーにダイアログが表示され、彼がオフラインであることを通知して、オンラインになって続行する必要があります。この部分はうまくいく。
また、このダイアログが表示され、ユーザーがオンラインになったときにこのダイアログは閉じられますが、この部分は機能せず、ダイアログは表示されたままになります。
問題は何ですか。どのようにダイアログを閉じることができますか?
正しく動作します。ありがとうございます。 – Masoud