Я пытаюсь проверить подключение к Интернету для работы в 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 да, я получаю это. Я не получаю журналы, что активность возобновляется, поэтому я считаю, что активность не возобновляется, и именно поэтому это происходит. Можете ли вы помочь, как сделать то, что вы говорите? –