Как установить ContentView в другой фрагмент, если Интернет недоступен, и возобновить фрагмент, если подключение доступно

После входа в приложение мне нужно проверять подключение к Интернету перед каждым onClick событие и после каждого Fragment Если подключение к Интернету недоступно, setContentView должен установить другой фрагмент, и как только Интернет станет доступным, он должен установить рабочий фрагмент.
Это код для проверки NetworkStatus

public class NetworkStatus {
    public static String checkConnection(Context context){

        ConnectivityManager connectivitymanager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);


        if(connectivitymanager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState()==NetworkInfo.State.CONNECTED || connectivitymanager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()==NetworkInfo.State.CONNECTED){

            return "true";

        }else{
            return "false";
        }
    }  

Это код перед выполнением любого onClick событие

String NetworkStatus=NetworkStatus.checkConnection(getContext());
        if(NetworkStatus.equals("false"))
        {
            alert.noInternetAlert(getActivity());
        }
        else
        {
            performAction();
        }  

Теперь как setContentView к другому фрагменту, если соединение недоступно при замене и добавлении новых фрагментов, и возобновить подключение к фрагменту, если подключение станет доступным?

2 ответа

Решение

Попробуйте это и посмотрите, работает или нет

В вашем фрагменте в новом методе просмотра

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView;
        if (isNetworkAvailable()) {     //if true
            rootView = inflater.inflate(R.layout.yourmainlayout, container, false);
        }
        else {      //if false
            rootView = inflater.inflate(R.layout.yourerrorlayout, container, false);
        }

        return rootView;
    }



//for checking network i.e, isnetwork available method is
 private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

Примечание. Для работы вышеуказанного метода необходимо добавить два разрешения в файл манифеста.

<uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

И если вы хотите, чтобы пользователь легко извлекал или пересылал активную информацию для проверки состояния сети или для перезагрузки активности, используйте схему обновления Swipe.

Как насчет макета, например:

<RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/white"
     android:visibility="gone">
              //Layout in case of no internet connection
  </RelativeLayout>

А затем переключите видимость с "ушел" на "видимый", в зависимости от подключения к Интернету, таким образом, вы можете показать отдельную компоновку в том же жизненном цикле фрагмента.

Надеюсь, поможет.

Другие вопросы по тегам