1

在我的应用程序登录后,我需要在每个事件之前onClick以及添加或替换每个事件之后检查 Internet 连接。如果FragmentInternet 连接不可用,setContentView则应设置另一个片段,并且一旦 Internet 可用,它应该设置工作片段。
这是检查代码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使用不同的片段,如果连接可用,则恢复到片段?

4

2 回答 2

1

以布局为例:

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

然后根据互联网连接将可见性从“已消失”切换为“可见”,这样您可以实现在同一片段生命周期中显示单独的布局。

希望能帮助到你。

于 2018-04-23T09:18:55.143 回答
1

试试这个,看看是否工作

在你的 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" />

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

于 2018-04-23T09:52:59.207 回答