技术标签: Android基本知识 java android
一、回调必有的四要素:
1.回调的接口,该接口一般在使用的类里面创建或者单独创建
//创建的回调接口,以及接口中要做的事
public interface Callback{
void doSomething();
}
2.在使用的类中接口的定义变量(接口不可以实例化)
// 一个接口变量
private Callback mCallback;
3.一个给接口变量赋值的方法
//一个给接口变量赋值的方法
public void setmCallback(Callback callback){
mCallback=callback;
}
4.该类中定义的接口变量的使用的场景
//一个使用接口变量的地方
public void use(){
mCallback.doSomething();
}
整体的代码如下,一般将将接口写在使用的类中
public class TestA {
// 一个接口变量
private Callback mCallback;
// 一个回调
public interface Callback{
void doSomething();
}
//一个给接口变量赋值的方法
public void setmCallback(Callback callback){
mCallback=callback;
}
//一个使用接口变量的地方
public void use(){
mCallback.doSomething();
}
}
二、具体实现回调的接口的类:
在具体回调实现的类中,一般是实例化使用类的对象,在具体实现的类中采取接口的变量赋值,以及接口的具体实现方法,正式这样综合实现了接口和具体的实现分离,从而达到回调效果,具体也是三大要素
1.常用的实现的方法是采用匿名的方式实现接口的具体方法
public class TestB extends Activity {
//TestA类的实例的引用
private TestA mTestA
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTestA=new TestA();
mTestA.setmCallback(new mTestA.Callback() {
@Override
public void doSomething() {
//具体实现接口的方法
Log.d(TAG, "doSomething: "+"我是接口的具体实现");
}
});
//实例实现TestA类中使用接口的方法
mTestA.user();
}
}
2.通过实现接口,以及传递自己本身来实现回调
public class B extends Activity implements TestA.Callback {
//A类的实例的引用
private TestA mTestA;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTestA=new TestA ();
//B类将自己(实际上是接口的实现)传给A类实例的接口变量
mTestA.setmCallback(this);
//实例实现A的方法,或者在A中实现该方法
mTestA.user();
}
//B类实现了A类的接口
@Override
public void doSomething() {
Log.d(TAG, "doSomething: "+"我是接口的具体实现");
}
}
回调的简单例子:
1.接收数据
public class MainActivity extends AppCompatActivity implements MyCallBack {
private ActivityMainBinding activityMainBinding;
public static final String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
getData getData=new getData();
getData.SetCallBack(this);
}
@Override
public void getInfo(String info) {
Log.e(TAG, "getInfo: "+info );
activityMainBinding.showinfo.setText(info);
}
}
2.创建接口
public interface MyCallBack {
void getInfo(String info);
}
3.获取数据
public class getData {
public String MyName="我是功夫熊猫";
private MyCallBack myCallBack;
public void SetCallBack(MyCallBack myCallBack){
this.myCallBack =myCallBack;
showInfo(MyName);
}
public void showInfo(String info){
this.myCallBack.getInfo(info);
}
}
4.结果展示
总结如下:
目前正在自学爬虫,在b站上看到网课都比较过时,页面情况早已改变,对于新手比较不友好,经过尝试成功爬取今日头条图片并下载。首先是在今日头条下进行搜索:https://www.toutiao.com/search/?keyword=美女右键点击查看网页源代码后发现并不是我们需要的,经过分析,应该是该数据是通过异步加载Ajax实现的。右键点击检查,点击Network并切换到XHR,此时再刷新页面可以...
转发:https://developers.weixin.qq.com/community/develop/doc/000e44edfbc438456baad9d895e400
参考链接:https://blog.csdn.net/qq_41112933/article/details/106815478
概述docker的运行模式使用服务命令配置远程访问使用配置文件配置远程访问1、docker的运行模式docker以CS方式运行,我们通过客户端发送给守护进程(服务端)命令或者restful api,然后守护进行执行这些指令2、使用服务命令配置远程访问1)开机启动docker服务systemctl enable docker如下信息显示,其中/usr/lib/systemd/system/docke...
weblogic:使用weblogic服务器管理应用程序应按照以下步骤进行:1、建立一个域,weblogic是以域的形式管理应用的,每个使用weblogic服务器的用户都应建立一个属于自己的域,以便往这个域里面发布项目、配置数据源等,域是基础,一切后续行为以这个域作为前提。2、weblogic和was服务器类似,都允许在控制台配置JNDI数据源,任何应用都需要和数据库打交道,虽然我
前端请求后端,不使用form table方式,使用request payload形式1.如果使用request payload形式在之前传值基础上对参数进行形式转换。转换为json字符串形式传输。data: JSON.stringify(data)2.request payload方式优点传递可以使用数组,遇到多个参数时候可以一起打包传递,相比单个参数传递更为安全。3.如何使用前台传递代码示例:var axios = require('axios') axios.po
刚才在用gmail的时候,无意中发现了界面右边的广告好像与邮件的题目有关.试了几次,果然如此.比如,题目是”祝XX生日快乐”,广告就是送花之类的.如果题目是linux内核之类的,那广告就变成了一些关于linux的技术文章.看来传说中的google 针对不同用户投放的不同广告还真的很不错.当然也有失效的时候,例如题目是星座的话,广告好像是一些无关的了.哈哈 ...
#参考Link:https://www.jianshu.com/p/2ee0a247a8cc#创建一个数据集合def loadDataSet(): #return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]] return apriori_metadata# 创建一项集# 所有元素转换为不可变的字典,放到列表中def createC1(dataSe...
前言最早互联网只是用于简单的浏览文档信息、查看黄页及门户网站等等,并没有交互这个说法。但是随着互联网慢慢发展,宽带、服务器等硬件设施得到了很大的提示,互联网允许人们可以做更多的事情,所以交互式Web逐渐兴起,而HTTP无状态的特点却严重阻碍了其发展。HTTP 是无状态的协议,每个请求都是完全独立的(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息)。也就是说,无法根据之前的状态进行本次的请求处理——服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次
(史上最全知识汇总)转载请贴上原文链接!作者:淮左白衣写于 2018年4月15日20:14:55如果,碰巧你打开了本篇博客,相信我,你想要的servlet知识,这里应该都能找到!!目录(史上最全知识汇总)转载请贴上原文链接!如果,碰巧你打开了本篇博客,相信我,你想要的servlet知识,这里应该都能找到!!Servlet开发IDEA如何配置tomca...
题目链接:http://codeforces.com/contest/1028/problem/BB. Unnatural Conditionstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet s(x...
CocoaPods第三方框架管理工具概念:所谓第三方,就是除了官方和本人以外写的框架我们称为第三方。CocoaPads作为一个工具,就应该具有工具的一些职能,比如引入,更新,删除等。我们常用的第三方框架包括:Mansory,AFNetworking,SDWebImage等。CocoaPads能够更好的管理我们项目中的第三方库;安装步骤: 一:打开终端:$sudo gem update --syst