如果没有互联网可用,如何将 ContentView 设置为另一个 Fragment,如果连接可用,如何设置 Resume Fragment

How to set ContentView to Another Fragment if No internet is available and Resume Fragment if Connection is Available

我的应用程序登录后,我需要在每个 onClick 事件之前和添加每个 Fragment 之后检查互联网连接,或者 replaced.If 互联网连接不可用 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到不同的片段,并在连接可用时恢复到片段?

以布局为例:

<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>

然后根据互联网连接将可见性从 'gone' 切换到 'visible' 这样您可以实现在同一片段生命周期中显示单独的布局。

希望对您有所帮助。

试试这个,看看是否有效

在oncreate视图方法中的片段中

 @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" />

如果您希望用户轻松获取或重新加载活动以检查网络状态或重新加载activity,请使用滑动刷新布局。