如果没有可用的互联网,如何将 ContentView 设置为另一个片段,如果连接可用,如何恢复片段

Posted

技术标签:

【中文标题】如果没有可用的互联网,如何将 ContentView 设置为另一个片段,如果连接可用,如何恢复片段【英文标题】:How to set ContentView to Another Fragment if No internet is available and Resume Fragment if Connection is Available 【发布时间】:2018-10-03 05:24:02 【问题描述】:

在我的应用程序登录之后,我需要在每个 onClick 事件之前以及在添加或替换每个 Fragment 之后检查 Internet 连接。如果 Internet 连接不可用,setContentView 应该设置另一个片段,并且尽快Internet get Available 它应该设置工作片段。 这是检查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 到不同的 Fragment 如果在替换和添加新的 Fragment 时没有可用的连接,并在连接可用的情况下恢复到 Fragment?

【问题讨论】:

如果网络不可用并且如果网络可用,它是否会生成一个空白页面来显示现在没有可用的数据或没有互联网连接,如果网络可用,它会加载包含数据的碎片网。 是的。我想用 TextView 显示空白片段没有 Internet 可用 你在使用listview在哪里设置数据 不。我没有使用它 最好的方法应该是使用一个警告对话框,它会显示互联网错误,但你仍然想放大任何其他视图,然后请参阅***.com/questions/45246440/… 【参考方案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" />

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

【讨论】:

【参考方案2】:

以布局为例:

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

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

希望对你有帮助。

【讨论】:

以上是关于如果没有可用的互联网,如何将 ContentView 设置为另一个片段,如果连接可用,如何恢复片段的主要内容,如果未能解决你的问题,请参考以下文章

如果互联网连接不可用,如何保存记录? (或如何通过 CKOperation 保存)

如何在将文件上传到s3时处理互联网不可用?

iOS:如果没有可用的互联网,谷歌分析 SDK 是不是会缓存所有数据以便稍后发送?

powershell 如果互联网可用,请每15分钟检查一次,如果没有则重新启动网卡。

没有可用的互联网连接时如何添加自定义错误页面

如果在android中打开了移动设备或wifi,如何检查互联网是不是可用[重复]