如果没有可用的Internet,如何将ContentView设置为另一个片段,如果连接可用则如何设置Resume Fragment

时间:2018-04-23 08:22:00

标签: android android-fragments setcontentview android-connectivitymanager

我的应用程序登录后,我需要在每次onClick事件之前和每次添加Fragment之后检查Internet连接。如果Internet连接不可用,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 个答案:

答案 0 :(得分:1)

试试这个,看看是否有效

你在oncreate view方法中的片段

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

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

答案 1 :(得分:0)

如何以布局为例:

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

然后切换“去掉”的可见性&#39;到了&#39;可见&#39;根据互联网连接,您可以实现在相同的片段生命周期中显示单独的布局。

希望它有所帮助。