如果啓用了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