如果启用了Gps,我的应用程序将独占地检查MainActivity。如果没有出现会引导用户进入Android位置设置的DialogFragment。关闭在基本活动类中实例化的DialogFragment
在访问所有活动时,如果没有建立网络/互联网连接或者甚至连接到网络,将出现一个对话框。
由于此检查在所有活动中都是必需的,因此我已为所有活动实施了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();
}
}
}
感谢您的快速回复。在调用_MainActivity_之前调用_BaseActivity_作为抽象类。所以GPS-DialogFragment在Internet-DialogFragment之后被调用。 Internet-DialogFragment显示在后台。您必须先管理Gps对话框,然后再返回到第二次调用Internet-Dialog的MainActivity。 – Kody 2013-02-22 15:51:09
Oki,但是你可以做同样的GPS对话框(在启动GPS设置前关闭它)? – 2013-02-22 15:56:42
当然,但在_MainActivity_重新进入时,_BaseActivity_被再次调用。第一个_InternetDialogFragment_尚未解除。但是现在显示了第二个_InternetDialogFragment_。 - > 1.)BaseActivity调用_InternetDialogFragment_ 2.)MainActivity调用_GpsDialogFragment_ - > _GpsDialogFragment_位于顶部3.)用户调用Android的GpsSettings 4)用户返回到MainActivity,隐式调用BaseActivity - >调用第二个_InternetDialogFragment_。 – Kody 2013-02-23 08:49:31