EventBus进入Activity页面给Fragment传值,并弹出提示
来源:互联网 发布:淘宝美工面试被难倒 编辑:程序博客网 时间:2024/06/05 15:03
1. 进入页面先访问网络状态.返回true或false表示网络状态的有无,将这个值使用EventBus传给Fragment页面
首先需要导入依赖
- compile 'org.greenrobot:eventbus:3.1.1'
2. 加入权限,允许访问网络状态的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission>
3. 某个Activity里面先调用访问网络状态的方法
//进入页面判断网络,发送EventBus黏性事件判断网络状态boolean flag = NetConnectionUtil.isNetConnectioned(this);if (flag){ //有网状态下 flag = true EventBus.getDefault().postSticky("true");}else { //无网状态下 flag = false EventBus.getDefault().postSticky("false");}
4. 判断网络状态,设置网络的封装工具类方法
import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.provider.Settings;/** * 判断网络连接的工具类 */public class NetConnectionUtil { /** * 判断是否有网络连接的方法 */ public static boolean isNetConnectioned(Context context){ boolean flag = false; //1. 获取网络连接对象 ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //2. 获取NetworkInfo对象,获取网络连接的信息,添加权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> NetworkInfo info = manager.getActiveNetworkInfo(); //3. 信息不为空时,就代表网络可用 if (info != null){ return info.isAvailable(); } return flag; } /** * 网络无连接时跳转页面,弹出对话框进行网络的设置 */ public static void setNetConnectionWork(final Context context){ AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("网络加载错误!"); builder.setMessage("网络连接不可用,是否设置网络?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //跳转到系统的设置网络的界面 Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); context.startActivity(intent); } }); builder.setNegativeButton("取消",null); builder.show(); }}
5. Fragment里面需要注册 Eventbus,定义一个接受的事件,上面加注解,在销毁的时候取消注册
//初始化EventBus,注册EventBusEventBus.getDefault().register(this);
//在UI主线程,注册粘性订阅事件,进行黏性事件处理函数@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)//判断网络,请求网络数据public void getEventBus(String flag){ if (flag.equals("true")){ Toast.makeText(getActivity(),"网络状态良好,访问网络数据正常",Toast.LENGTH_SHORT).show(); //动态传值替换请求路径:get请求方式 presenter.get(num,page); //无动态传值请求路径:get请求方式 //presenter.get(); }else { NetConnectionUtil.setNetConnectionWork(getActivity()); }}
//在onDestory()方法中取消订阅:防止内存溢出@Overridepublic void onDestroy() { super.onDestroy(); EventBus.getDefault().removeAllStickyEvents(); EventBus.getDefault().unregister(this);}
阅读全文
0 0
- EventBus进入Activity页面给Fragment传值,并弹出提示
- EventBus:Activity给Fragment传值
- EventBus 页面传值并启动Activity
- EventBus传值(Fragment和Activity,Activity和Activity)
- Servlet 页面跳转 并弹出提示对话框
- servlet弹出提示框并跳转页面
- fragment给activity设置toolbar并配置menu
- 页面弹出遮罩层,给用户提示信息,后台继续操作
- Activity给Fragment传参
- 进入Activity防止键盘弹出
- 使用EventBus进行Fragment和Activity通信
- EventBus实现activity跟fragment交互数据
- 使用EventBus进行Fragment和Activity通信
- EventBus在Activity、Fragment、Service中的使用
- android 进入页面EditText不弹出输入法弹出框并获得光标的方法
- Asp.Net下载页面,并弹出下载提示框
- Asp.Net下载页面,并弹出下载提示框
- 页面关闭弹出提示并注销登录(兼容…
- 12.3
- 将三个数从小到大依次输出
- 一步步探索学习Android Touch事件分发传递机制(三)
- POJ:2632-Crashing Robots
- 自定义banner
- EventBus进入Activity页面给Fragment传值,并弹出提示
- hdoj-1280前m大的数
- 插入排序和选择排序
- Mycat——由来
- 高精度加法
- rtrofit @get @path 用注解@get("") 请求数据
- Panel以及Label的设置
- 【技术重温】html之重点(二)
- SpringBoot与Thymeleaf实现国际化