我想檢查互聯網連接上的活動在android中。我有一個`ConnectivityReceiver'類,它返回網絡的當前狀態,並返回捕獲網絡變化時的狀態。檢查互聯網連接和顯示互聯網連接錯誤使用片段(底部表)
我在activity
上使用這個類的方法。我想要的是,只要方法返回沒有互聯網連接,BottomSheetDialogFragment
應顯示'重試'button
。在按button
時,Bottom Sheets dialog
必須關閉,activity
需要重新開始,並且應該再次檢查互聯網。基本上,每次我關閉Bottom Sheets dialog
後,它應該檢查互聯網。
互聯網連接類工作正常,我檢查了它使用日誌,它每次檢查Network State
是否有。問題出在dialog
。每次關閉dialog
時,它都會在不檢查互聯網的情況下恢復activity
。
NoInternetConnectivity.java
- 擴展'BottomSheetDialogFragment'類的類。
MainActivity.java
public class MainActivity extends AppCompatActivity{
final BottomSheetDialogFragment internetConnectivitySheet = NoInternetConnectivity
.newInstance("New Internet Connectivity Bottom Sheet");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Manually checking internet connection
checkConnection();
}
/**
* Method to check connection on activity resume
*/
@Override
protected void onResume(){
Log.d(LOG_TAG, "onResume()");
MyApplication.getInstance().setConnectivityListener(this);
checkConnection();
super.onResume();
}
/**
* Method to check internet connection in activity.
*/
private void checkConnection() {
Log.d("Check Connection called", "CHECKING CONNECTION...");
if(!internetConnectivitySheet.isAdded() && !ConnectivityReceiver.isConnected()){
internetConnectivitySheet.show(getSupportFragmentManager(),
internetConnectivitySheet.getTag());
} else if (internetConnectivitySheet.isAdded()) {
internetConnectivitySheet.dismiss();
} else {
//internet is connected :-)
}
}
/**
* Callback will be triggered when there is change in
* network connection
*/
@Override
public void onNetworkConnectionChanged(boolean isConnected) {
Log.d("On Network Change Called", "CHECKING CONNECTION...");
if(!internetConnectivitySheet.isAdded() && !isConnected){
internetConnectivitySheet.show(getSupportFragmentManager(),
internetConnectivitySheet.getTag());
} else if (internetConnectivitySheet.isVisible()) {
internetConnectivitySheet.dismiss();
} else {
//internet is connected :-)
}
}
}
在檢查日誌,當我關閉dialog
,活動沒有得到恢復。發生了什麼,以及如何解決這個問題?
你的活動不應該被暫停後致電檢查一個新的片段。因此,當你刪除你的片段時,你不應該得到onResume。 – Distwo
您需要通過設置BottomSheetBehavior.BottomSheetCallback並在此時調用checkConnection()來檢測底部表單對話狀態何時發生更改。 – Distwo
@Distwo是的,我明白了。我沒有收到活動恢復的日誌,所以我相信活動不會恢復,這就是發生這種情況的原因。你能幫助你怎麼做你說的嗎? –