如果没有互联网可用,如何将 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,请使用滑动刷新布局。
我的应用程序登录后,我需要在每个 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,请使用滑动刷新布局。