① 如何Android编程中实现点击页面1中的button1,触发页面2中的button2的事件
如果仅仅是点击button1,再触发button2,只要把button2事件放到button1的click中即可
希望可以帮助到你,望采纳
② android 动态布局控件如何设置触发事件
View
view
=
LayoutInflater.from(this).inflate(R.layout.activity_main,
null);//被加进去的布局
mainView.addView(view);//主视图
Button
btn
=
(Button)view.findViewById(R.id.btn);//被加进去布局中的控件
//添加事件
btn.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
Log.e("tag",
"click
event");
}
});
以上,希望对你有帮助。
③ Android View触发点击事件,但不消费点击事件
很简单View消费自己点击事件是要触发onTouchEvent方法,只需要自定义一下View,并重写onTouchEvent返回false表示不消费事件,然后再调用performClick触发点击事件。
④ Framework事件机制——手撕Android事件处理的三种方法
Android的事件处理的三种方法:
setOnClickListener,setOnLongClickListener、setOnTouchListener
注意:如果onTouchEvent方法return true,则单击事件和长摁事件不再执行;若onLongClick方法返回true,则单击事件不再处理。
需要定义继承组件的类,重写回调方法Touch方法执行时,先被Activity捕获,DispatchTouchEvent方法处理。return false,交给上层的onTouchEvent方法处理;return super.dispatchTouchEvent(ev),则传递给最外层的View。
View用Dispatch方法处理,return false,由上层的onTouchEvent方法处理。如果返回super.dispatchTouchEvent(ev),则本层的onInterceptTouchEvent拦截,如果拦截true,则拦截,false不拦截,传递给子View的DispatchTouchEvent处理。
常用的回调方法:onKeyDown,onKeyLongPress,onKeyUp,onTouchEvent,onTrackballEvent(轨迹球事件)监听和回调同时存在时,先调用监听。
流程模型图:
Event source 事件源
Event 事件
Event Listener 事件监听器
下面我们来看一下点击事件和触摸事件的监听三要素具体是那部分:
由于点击事件比较简单,系统已经帮我们处理了,并没有找到具体事件是哪个。
View.OnClickListener 单击事件监听器必须实现的接⼝
View.OnCreateContextMenuListener 创建上下⽂菜单事件
View.OnFocusChangeListener 焦点改变事件
View.OnKeyListener 按键事件监听器
View.OnLongClickListener 长按事件监听器
View.OnTouchListener 触摸屏事件监听器
⾸先,事件监听机制中由事件源,事件,事件监听器三类对象组成。
事件监听器处理流程:
在此以OnClickListener单击事件为例使用intent来实现页面的跳转
监听事件处理是事件源与事件监听器分开的而基于回调的事件处理UI组件不但是事件源,而且还是事件监听器,通过组件的相关回调方法处理对应的事件。
Ⅰ. 自定义View类,继承自需要的View UI类。ex :自定义 MyButton按钮类 extends 基础Button类
Ⅱ. 复写回调函数。ex:public boolean onTouchEvent(MotionEvent event)
每一个事件回调方法都会返回一个boolean值,①.如果返回true:表示该事件已被处理,不再继续向外扩散,②.如果返回false:表示事件继续向外扩散
而说到基于回调就离不开监听机制 。
几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于表示该处理方法是否能完全处理该事件。
如果处理事件的回调方法返回true,表明该处理方法已经完全处理改事件,该事件不会传播出去。
如果处理事件的回调方法返回false,表明该处理方法并未完全处理该事件,该事件会传播出去。
对于基于回调的时间传播而言,某组件上所发生的事件不仅会激发该组件上的回调方法,也会触发该组件所在Activity的回调方法——只要事件能传播到该Activity。
这里是在模拟器里进行的测试,这里按下键盘(而不是点击),会看到 logcat 中的输出,如下:
View类实现了KeyEvent.Callback接口中的一系列回调函数,因此,基于回调的事件处理机制通过自定义View来实现,自定义View时重写这些事件处理方法即可。
Handler是一个消息分发对象。
Handler是Android系统提供的一套用来更新UI的机制,也是一套消息处理机制,可以通过Handler发消息,也可以通过Handler处理消息。
在下面介绍Handler机制前,首先得了解以下几个概念:
在子线程执行完耗时操作,当Handler发送消息时,将会调用 MessageQueue.enqueueMessage ,向消息队列中添加消息。 当通过 Looper.loop 开启循环后,会不断地从消息池中读取消息,即调用 MessageQueue.next , 然后调用目标Handler(即发送该消息的Handler)的 dispatchMessage 方法传递消息, 然后返回到Handler所在线程,目标Handler收到消息,调用 handleMessage 方法,接收消息,处理消息。
从上面可以看出,在子线程中创建Handler之前,要调用 Looper.prepare() 方法,Handler创建后,还要调用 Looper.loop() 方法。而前面我们在主线程创建Handler却不要这两个步骤,因为系统帮我们做了。
初始化Looper :
从上可以看出,不能重复创建Looper,每个线程只能创建一个。创建Looper,并保存在 ThreadLocal 。其中ThreadLocal是线程本地存储区(Thread Local Storage,简称TLS),每个线程都有自己的私有的本地存储区域,不同线程之间彼此不能访问对方的TLS区域。
开启Looper
发送消息 :
post方法:
send方法:
在子线程中,进行耗时操作,执行完操作后,发送消息,通知主线程更新UI。
本文讲解了三个方面;Android事件机制;基于监听、基于回调以及Handler消息处理。还有许多没有讲解到的知识点,我总结在了整理的一套Android进阶笔记里面;需要学习进阶的同学可以前往获取: Frame Work源码解析手册 、 Android核心技术进阶手册、实战笔记、面试题纲资料
⑤ 安卓模拟器 如何模拟触发接收短信事件
1、在进行安卓模拟器模拟触发接收短信事件之前,前提是要启动安卓模拟器,可以借助Java eclipse完成触发模拟事件,首先打开Java eclipse,然后按照下面这张图的显示,点击DDMS;

5、在安卓模拟器中打开短信,就能够看到此次模拟短信的内容了。
⑥ 解决安卓收起键盘无法触发失焦事件的问题
最近在做一个移动端 Web 项目,在首页底部是有一个类似于 APP 导航栏(以下称 FootNav ),采用的 fixed 布局固定于底部。同时页面有一些 <input> 输入框(以下称 Input )。
当聚焦于 Input 时,在 iOS 预期效果是没问题,但是在杀千刀的 Android 上,页面高度发生变化,导致 FootNav 固定在手机键盘上面,同时 FootNav 也直接挡住了输入框,交互体验非常的糟糕。
烦死了...
先了解下背景,键盘的弹出收起,在 iOS 端与 Android 端的 WebView 中表现并非一致的。
针对 Android 设备做处理就行了,iOS 无需处理。
处理方式: Input 聚焦隐藏 FootNav ,失焦时再将其显示出来 。(同理,修改布局方式也是一样的)
首先这种处理思路是没毛病的,但是...
监听页面高度的变化,利用这一点我们就可以处理 FootNav 的隐藏/显示了。
思路很简单:首先进入页面时,先记录窗口的原始高度。每当 Input 聚焦时,设置 window.onresize 函数,当窗口宽高发生改变时便会触发。
以 React 为例:
The end.
⑦ Android spinner点击相同的item怎么触发事件
您好,是这样的:
换成LinkButton就可以。——解决方案——好像触发ItemDataBind事件然后用Button b= (e.Item.FindContorl("Button3") as Button);才能发现button 在模板里的服务器端代码都要事件编写 在用e.item.findcontorl找------解决方案。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
int index = tmpTabBarController.selectedIndex;
NSString *titleName = nil;
switch (index) {
case 0:
titleName = @"FirstView";
break;
case 1:
titleName = @"SecondView";
break;
case 2:
titleName = @"ThirdView";
break;
default:
break;
}
[viewController setTitle:titleName];
UIImage *image = [UIImage imageNamed:@"clockicon.png"];
[[viewController tabBarItem] setImage:image];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
⑧ android button的触发事件怎么写
定义Button button=(Button)findviewById(R.id.button);
//注册点击事件
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// 你要触发的内容
}
});