如果启用了Gps,我的应用程序会立即检查MainActivity。如果不是,则会出现一个DialogFragment,引导用户进入Android位置设置。
在访问所有活动时,如果未建立网络/互联网连接,甚至连接到网络,则会显示对话框。
由于在所有活动中都需要进行此检查,因此我已为所有活动实施了BaseActivity,并在onStart()中实施了检查。
当用户从管理位置设置返回时,会出现第二个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();
}
}
}
答案 0 :(得分:0)
您可以在切换到Wifi设置(在onClick上)之前解除对话:
@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) {
dialog.dismiss();
connectivityHelper.enableMobileInternetSettings(getApplicationContext());
}
})
.setNegativeButton("Activate WiFi", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
connectivityHelper.enableWiFiSettings(getApplicationContext());
}
}).create();
}
对话框将被解除,然后会弹出设置
答案 1 :(得分:0)
我解决了。我实现了@Override public void onPause(){super.onPause(); this.dismiss();在EnableInternetDialogFragment类中。 工作正常