私のアプリケーションは、Gps が有効になっているかどうかを排他的に MainActivity でチェックします。そうでない場合は、DialogFragment が表示され、ユーザーを Android の位置情報設定に誘導します。
すべてのアクティビティにアクセスすると、ネットワーク/インターネット接続が確立されていない場合、またはネットワークに接続されていない場合でも、ダイアログが表示されます。
このチェックはすべてのアクティビティで必要なので、すべてのアクティビティに BaseActivity を実装し、onStart() にチェックを実装しました。
ユーザーが場所の設定の管理から戻ると、2 つ目の EnableInternetDialogFragment が表示されます。最初の (解決されていない) ダイアログがまだ表示されている
私の現在の解決策は、onPause() メソッドでダイアログを閉じることですが、これはまったくうまくいきません。
この動作を回避/管理する方法はありますか?
public abstract class BaseActivity extends FragmentActivity {
protected ConnectivityTester connectivityTester;
protected ConnectivityHelper connectivityHelper;
protected EnableInternetDialogFragment enableInternetDialogFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
connectivityTester = new ConnectivityTester();
connectivityHelper = new ConnectivityHelper();
}
@Override
protected void onStart() {
super.onStart();
final boolean internetEnabled = connectivityTester.isInternetEnabled(getApplicationContext());
if (!internetEnabled) {
enableInternetDialogFragment = new EnableInternetDialogFragment();
enableInternetDialogFragment.show(getSupportFragmentManager(), "enableInternetDialog");
}
}
@Override
protected void onPause() {
super.onPause();
if (enableInternetDialogFragment.getDialog() != null) {
enableInternetDialogFragment.dismissAllowingStateLoss();
}
}
public final class EnableInternetDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle("Activite Network/Internet")
.setMessage("test")
.setPositiveButton("Activate Internet", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
connectivityHelper.enableMobileInternetSettings(getApplicationContext());
}
})
.setNegativeButton("Activate WiFi", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
connectivityHelper.enableWiFiSettings(getApplicationContext());
}
}).create();
}
}
}