如果没有可用的互联网,如何将 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 保存)
iOS:如果没有可用的互联网,谷歌分析 SDK 是不是会缓存所有数据以便稍后发送?