首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

一、数据模型 Model 与视图 View 双向绑定 ---- 1、数据模型 Model 与视图 View 的单向绑定 之前的博客 , 将 数据模型 Model 的 指定 Field 字段 绑定到...使用 DataBinding 前 , 必须启用数据绑定 , Module 下的 build.gradle 构建脚本 , " android / defaultConfig " 层级 , 配置...@Bindable 注解修饰该函数 , 同时 DataBinding 布局 , 为 EditText 组件设置值 , 也使用该函数设置值 ; 设置了 @Bindable 注解 , 只要 student...@Bindable 注解修饰的函数生成 ; BR 类生成位置 app\build\generated\source\kapt\debug\kim\hsl\databinding_demo\BR.java...DataBinding 布局文件 , 需要 " data / variable " 标签 , 引入 StudentViewModel 类型的对象 ; 在位 EditText 组件赋值 , 需要使用

1.3K30

安卓应用安全指南 六、困难问题

所以这个剪贴板功能存在导致信息泄漏的风险。 这是因为剪贴板的实体系统是唯一的,并且任何应用都可以使用ClipboardManager,随时获取存储剪贴板的信息。...本节介绍简单有效的方法:一种方法是禁用视图的长按,另一种方法是选择字符串菜单删除复制/剪切条目。 对策的必要性可以根据图 6.1-1 的流程确定。...6.1.1.1 选择字符串菜单删除复制/剪切条目 Android 3.0(API Level 11)之前不能使用TextView.setCustomSelectionActionMODECallback...禁用视图的长按可以layout.xml文件规定。 下面展示了示例代码,用于EditText的字符串选择菜单删除复制/剪切条目。...也可以使用ClipboardManager.setPrimaryClip()方法剪贴板上存储新数据

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

安卓应用安全指南 4.9 使用`WebView`

启用 JavaScript 存在潜在的风险,即恶意第三方可以获取设备信息并操作设备。...“4.9.1.2 仅显示内部管理的内容”部分的示例代码,使用固定值 URL 显示内部管理的内容来确保安全。 如果你需要显示意图收到的 URL,则必须确认该 URL 在内部管理的 URL 。... Android 4.2(API Level 17)或更高版本,已采取措施,将漏洞限制为 Java 源代码上使用@JavascriptInterface注释的方法,而不是所有注入的 Java 对象的方法...Web 消息传送是一种 HTML5 定义的框架,用于不同的浏览上下文之间,发送和接收数据 [20]。...因此,使用WebView进行 Web 消息传递,最好在postWebMessage()方法明确指定特定的源。

1K10

Android开发笔记(二十八)利用Application实现内存读写

不过Java没有全局变量的概念,与之比较接近的东西,是类里面的静态成员变量;该变量可被外部直接引用,并且不同地方引用的值都是一样的(前提是引用期间不能修改该变量的值)。...适合在Application中保存的全局变量,主要是一些Activity不方便传输的对象,包括: 1、Java容器类和需要使用方法的对象;因为Intent不能直接传递容器数据,同时序列化对象只能传输数据却不能传输方法...2、多个Activity都要使用数据,比如说电商APP的用户信息,既不方便在每次Activity跳转都传递用户数据,也不方便在每个Activity页面频繁查询用户数据库,所以这种数据也适合作为全局变量由...其次每个Activity声明MainApplication类的成员对象,同时获取MainApplication的静态对象赋值给该成员对象,于是每个Activity都持有了MainApplication...Android工程默认没有该属性,如果不设置该属性,系统会启用默认的Application,当然此时我们就无法实现全局变量了。

85320

Android文件读写和使用SharedPreferences储存数据

程序的终归目的还是操作数据来达到实现一些特定功能,Android,我们可以通过操作文件或者使用SharedPreferences还有数据库来保存一些数据。...首先来看一下Android文件的读写: 假设我们现在有这么一个需求:一个Activity中有一个EditText每次这个程序启动的时候我们要恢复用户上一次EditText输入的数据。...MainActivity.java 文件,我们定义了两个方法:saveText() 和 readText() 分别用于储存 EditText 输入的内容和恢复 EditText 的内容。...主要是一些Java的文件操作,如果不熟悉的话可以去网上找一些教程。 onDestroy 方法调用 saveText 来储存 EditText 数据。..., onCreate 方法我们进行恢复 EditText 数据

1.9K10

Android AQueryajax访问SSH搭建的后台Java Web服务器

讲概念很难理解其中的要点,今天讲一个例子,这个例子是利Android AQueryajax访问SSH搭建的后台Java Web服务器。...ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8"); //获取客户端传送过来的...":"eyuii","username":"12314"}] 数据相应的结果为: 有几点要注意 1.数据的字段是通过hibernate映射到代码的并生成代码,所以数据库表不能随便写,要和代码相对应才行...2.Android端URLIP必须是联网的IP,不能是localhost。 3.记得Android配置文件处添加网络权限,否则会出错。...4.Aquery的ajax最后返回的是json的字符串形式而不是JSONObject类型 5.数据库我是用sql server来建立的,这个表我也放在下载文件中了,大家直接导入就可以使用了。

81830

EidtText

" /> RelativeLayout> 标签我们设置了android:gravity的属性为left|top,以便输入的文本左上角开始显示。...我们将标签的android:onClick属性指定了单击事件的方法insertPic,该方法,随机获取gur_project_1到gur_project_10的任意一个资源的ID, 最常用的作法是将这个...10个图片的资源ID放到一个数据里面,然后随机产生一个数组索引获取相应的资源ID,但是我们并没有采用这种方式,而是采用了直接通过反射技术R.drawable类获取图像资源ID的方法。...使用Field.get方法获取变量,如果是静态变量,Field.get方法的参数可以设置为null即可,如果不是静态变量,则需要为Field.get方法指定一个变量所在类的对象作为参数值。...---- EditText输入特定的字符 EditText控件可以通过多种方式指定允许输入的字符,比如指向输入0~9的数字 三种方式: android:digits属性设置为0123456789

65950

Android开发 经验技巧汇总(基于Android Studio)(二)

文章目录 1.复制Assets文件到手机SD卡 2.Androidstudio添加jar包的方法 3.Android Project种编写并独立运行测试纯Java代码 方法一:通过Java Library...实现 方法二:通过单元测试实现 4.EditText软键盘的调起、关闭 5.禁止EditText自动弹出软键盘 6.EditText输入文本右边开始显示 7.判断APP是否联网 8.检查网络连接状态的变化无网络跳转到设置界面...:focusable="false"// 键盘永不弹出 5.禁止EditText自动弹出软键盘 (1)包含EditText的父布局添加android:focusable="true"和android...输入文本右边开始显示 进行计算器等开发的时候,常常需要在EditText控件输入的文本右边开始显示: xml文件中加入android:gravity="right"或者android:gravity...:exported="true"属性; 不清楚目标包名 以及 目标Activity的完整路径,建议使用 代码第一种方式,即 使用 action 启动,但是不要忘记在目标App的Activity注册

1.3K20

Android开发笔记(六十)网络的检测与连接

ConnectivityManager就是用于检测网络连接的工具类,其对象系统服务Context.CONNECTIVITY_SERVICE获取。...getSubtype : 获取网络子类型。当网络类型为数据连接,子类型为2G/3G/4G的细分类型,如CDMA、EVDO、HSDPA、LTE等等。...当网络类型是wifi,要想获取详细的wifi信息,又得使用WifiManager,该类的对象系统服务Context.WIFI_SERVICE获取。...getConfiguredNetworks : 获取已配置的网络信息。 addNetwork : 添加指定wifi配置。 enableNetwork : 启用指定wifi。...IP通过socket方式经由NETBIOS协议获取电脑的MAC和计算机名,当然前提是对方电脑要正常开启NETBIOS服务(系统服务的“TCP/IP NetBIOS Helper”),具体代码参见《Android

3.6K30

安卓第六夜 凡高的自画像

ADT的文件导航栏右键点击文件夹,选择New->Other后,可以得到下面的对话框: ? 你可以在这里选择想要创建的新文件的类型,比如XML文件,Java文件等。...提交数据后,这个Activity将通过EditText的getText()方法获取字符输入。提交的字符串将使用SharedPreferences存储起来。...SharedPreferences以键值对(key-value pair)的方式存储数据写入时,我们需要说明数据对应的键。在读取,我们将根据键,来获得对应的数据值。数据可以整个应用范围内调用。...另一方面,我把数据读取部分放入了onResume()方法。根据安卓的规定,MainActivity第一次运行,以及每次暂停复苏,都会调用该方法。...用户SelfEditActivity修改返回后,就可以立即获得最新的数据使用getString()方法,SharedPreferences对象获得键位"name"的值。

1.1K70

android使用Socket通信实现多人聊天应用

它可以保证数据连接的一方传递到另一方,并且发送数据的顺序和所接收数据的顺序一致。当应用程序需要一个可靠的、点对点的连接,可以使用TCP。 ?...两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。...而Socket通信则是双方建立起连接后就可以直接进行数据的传输,连接可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么,什么是socket?...Socket又称套接字,程序内部提供了与外界通信的端口,即端口通信。通过建立socket连接,可为通信双方的数据传输传提供通道。socket的主要特点有数据丢失率低,使用简单且易于移植。...= null) { try { client.getOutputStream().write(s3.getBytes("utf-8"));// 获取客户端得到的数据 } catch (IOException

2.2K30

利用startActivityForResult返回数据到前一个Activity(附源码+解析)

要实现的功能如下: Activity A将数据传到Activity B,再从Activity B获取数据后,再传回Activity A。...具体步骤如下: Activity A中有一个Button,点击Button后,获取要传到Activity B的数据,将数据封装到Bundle,再调用startActivityForResult将数据传到...Activity B Activity A 重写onActivityResult函数,判断requestCode和resultCode是否是我们预期的结果,如果是,那么Bundle获取数据,重新显示...Activity A Activity B获取Activity A传过去的Intent对象,并取出Bundle对象,再从Bundle取出数据字段,显示在当前页面 Activity B也有一个Button...源码对这个取值的定义是“user-defined activity results”(用户自定义的),我源码全局搜索了下,用的地方不多,挑了一两个使用的地方: (1)PackageInstaller

1.8K20

Android训练课程(Android Training) - 构建你的第一个应用

如果你的应用的一些特性可能仅仅在较新的版本上,并且它不是在你的所有应用特性起到决定性作用的话,你可以它运行在它支持的版本上启用它。...,通过它你可以再你的代码里引用该对象,比如去读取和操作这个对象(你将会在下一章节看到) 当你XML应用资源对象,符号“@”是必须的。...每一个资源都有一个对应的在你项目里gen/R.java里声明的 资源对象。你可以使用在 R 类里的对象名称去引用你的资源,比如当你为android:hint 属性指定一个字符串的值。...你也可以创建任意的资源ID,并通过android:id来关联到一个视图控件,它使得你可以其他代码里应用这个视图控件。 每次你编译你的应用,SDK工具都会生产R.java文件,你不能手动修改这个文件。...它被包含在ADT包,但是如果你使用不同的IDE,你可以 添加平台和包 Adding Platforms and Packages 安装它。

2.1K00

12.Android-SQLiteOpenHelper使用

,如果传入null 则表示创建临时数据库,应用退出之后,数据就会丢失 //第三个参数:游标工厂 如果使用系统默认的游标工厂就传入null,一般都填null //第四个参数:数据库的版本号 用版本号来控制数据库的升级和降级...,该函数第一次创建数据库时调用,也就是调用SQLiteOpenHelper类的getWritableDatabase()或者getReadableDatabase()时会调用该方法,如下图所示: ?...可以看到只有调用getWritableDatabase()或者getReadableDatabase(),才会真正创建数据库。...getReadableDatabase() : 获取一个只读数据库(不能写入) getWritableDatabase () : 获取一个可写的数据库,不再操作的时候,一定要close()关闭数据库...newVersion : 显示升级之后的新数据库版本。 当数据库需要升级时调用。使用此方法删除表、添加表或执行升级到新模式版本所需的任何其他操作。

1K10
领券