アンドロイドのアクティビティでインターネット接続を確認しようとしています。ネットワークの現在の状態を返す `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
を閉じると、活動を再開されません。何が起こっているのか、これを修正する方法は?
を却下した後、チェックを呼び出す必要があります。新しい断片。したがって、フラグメントを削除したときには復活しないでください。 – Distwo
'BottomSheetBehavior.BottomSheetCallback'を設定し、その時点で' checkConnection() 'を呼び出すことによって、ボトムシートのダイアログ状態がいつ変化するかを検出する必要があります。 – Distwo
@Distwoはい私はそれを得ています。私は活動が再開したログを取得していないので、活動が再開されていないと思うので、これが起こっているのです。あなたの言うことをどうやって手助けすることができますか? –