Mono for android,Xamarin点击事件的多种写法

(一)原本java的写法(相信很多是学过java的):

需要实现接口View.IOnClickListener,最好也继承类:Activity,因为View.IOnClickListener接口又继承了IJavaObject, IDisposable接口,所以还学要实现这两个接口里面的成员,而Activity已经实现可了这两个接口的成员,就不需要我们再写了,毕竟我们大部分只想重写View.IOnClickListener里面的OnClick函数。(如果自定义的类只是实现了View.IOnClickListener接口,不继承Activity,就需要实现另外2个接口的其他成员,在vs中选中接口,使用快捷键Alt+Shift+F10,可快速实现接口)

代码如下:

 1 using System;
 2 using Android.App;
 3 using Android.Content;
 4 using Android.Runtime;
 5 using Android.Views;
 6 using Android.Widget;
 7 using Android.OS;
 8 
 9 namespace App2
10 {
11     [Activity(Label = "App2", MainLauncher = true, Icon = "@drawable/icon")]
12 
13 
14     public class MainActivity : Activity, View.IOnClickListener
15     {
16         Button button;
17         public void OnClick(View v)
18         {
19            button.Text = string.Format("{0} clicks!", v.Id);
20         }
21         protected override void OnCreate(Bundle bundle)
22         {
23             base.OnCreate(bundle);
24 
25             // Set our view from the "main" layout resource
26             SetContentView(Resource.Layout.Main);
27 
28             // Get our button from the layout resource,
29             // and attach an event to it
30              button = FindViewById<Button>(Resource.Id.MyButton);
31              button.SetOnClickListener(this);
32           
33          }
34         }
35 }

当然也可以自己定义一个类,实现接口,重写OnClick函数,然后button.SetOnClickListener(你自定义类的实例);

(二)接下来介绍C#的4种写法(其实大同小异)

1.第一种(创建模板就有的):

1 Button button = FindViewById<Button>(Resource.Id.MyButton);
2  button.Click += delegate { button.Text = string.Format ("{0} clicks!", count++);};

2.第二种

 1 namespace App2
 2 {
 3     [Activity(Label = "App2", MainLauncher = true, Icon = "@drawable/icon")]
 4 
 5 
 6     public class MainActivity : Activity, View.IOnClickListener
 7     {
 8         int count = 1;
 9         Button button;
10        
11         protected override void OnCreate(Bundle bundle)
12         {
13             base.OnCreate(bundle);
14 
15             // Set our view from the "main" layout resource
16             SetContentView(Resource.Layout.Main);
17 
18             // Get our button from the layout resource,
19             // and attach an event to it
20              button = FindViewById<Button>(Resource.Id.MyButton);
21              button.Click +=button_Click;
22           
23          }
24 
25         private void button_Click(object sender, EventArgs e)
26         {
27             button.Text = string.Format("{0} clicks!", count++);
28         }
29 
30         
31         }
32 }

3.第三种

 1 public class MainActivity : Activity, View.IOnClickListener
 2     {
 3         int count = 1;
 4         Button button;
 5        
 6         protected override void OnCreate(Bundle bundle)
 7         {
 8             base.OnCreate(bundle);
 9 
10             // Set our view from the "main" layout resource
11             SetContentView(Resource.Layout.Main);
12 
13             // Get our button from the layout resource,
14             // and attach an event to it
15              button = FindViewById<Button>(Resource.Id.MyButton);
16              button.Click += new EventHandler(button_Click);
17           
18          }
19 
20         private void button_Click(object sender, EventArgs e)
21         {
22             button.Text = string.Format("{0} clicks!", count++);
23         }
24 
25         
26         }
View Code

4.第四种

 1 namespace App2
 2 {
 3     [Activity(Label = "App2", MainLauncher = true, Icon = "@drawable/icon")]
 4 
 5 
 6     public class MainActivity : Activity, View.IOnClickListener
 7     {
 8         int count = 1;
 9         Button button;
10        
11         protected override void OnCreate(Bundle bundle)
12         {
13             base.OnCreate(bundle);
14 
15             // Set our view from the "main" layout resource
16             SetContentView(Resource.Layout.Main);
17 
18             // Get our button from the layout resource,
19             // and attach an event to it
20              button = FindViewById<Button>(Resource.Id.MyButton);
21              button.Click += (sender, e) =>{ button.Text = string.Format ("{0} clicks!", count++);};
22      
23          }
24         }
25 }
View Code

 

转载于:https://www.cnblogs.com/nightswatch/p/4276840.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一句话木马绕过linux安全模式,一句话木马(webshell)是如何执行命令的

在很多的渗透过程中&#xff0c;渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限&#xff0c;不论asp、php、jsp、aspx都是如此&#xff0c;那么一句话木马到底是如何执行的呢&#xff0c;下面我们就对webshell进行一个简单的分析。首先我们先看…

第六章 Qt布局管理器Layout

第六章 Qt布局管理器Layout 大家有没有发现一个现象&#xff0c;我们放置一个组件&#xff0c;给组件最原始的定位是给出这个控件的坐标和宽高值&#xff0c;这样Qt就知道这个组件的位置。当用户改变窗口的大小&#xff0c;组件还静静地呆在原来的位置&#xff0c;这有时候显然…

【APICloud系列|36】小米应用商店可以检测同个应用不同版本信息

在小米应用商店上架的信息 在其他应用商店上架的信息&#xff0c;比如应用宝 小米发过来的友好提示邮件&#xff1a;

【APICloud系列|35】小米应用商店版本更新

1.在小米应用商店后天重新上传一个更新加固已经签名的安装包。 链接地址&#xff1a;https://dev.mi.com 2.完善资料&#xff0c;只需要填写更新日志简单说明更新的缘由&#xff0c;再次选择相应的语言即可。原来的内容还是存在的。 3.提交审核就行。

Linux光盘检测,qpxtool

软件简介各位使用Linux系统的刻录发烧友有福了。不用再为了检测光碟品质而切换到Windows系统了。因为在Linux系统里也有支持光碟品质检测的软件&#xff01;它的名字是QPxTool。虽说05年底QPxTool就诞生了&#xff0c;但最近才被以rpm包的形式提供给Fedora用户。首先看下它的界…

存根类 测试代码 java_为旧版代码创建存根-测试技术6

存根类 测试代码 java任何阅读此博客的人都可能已经意识到&#xff0c;目前我正在开发一个项目&#xff0c;其中包含大量的旧代码&#xff0c;这些旧代码庞大&#xff0c;扩展且编写时从未进行过任何测试。 在使用此遗留代码时&#xff0c;有一个行为非常差的类非常普遍&#…

百度开发平台提交应用后进行官方认证审核失败?

昨晚收到一封来自百度的邮件 这里需要登录工业和信息化部查询后的ICP备案后的详细页面截图。&#xff08;其实也可以在备案的平台查询相关信息&#xff0c;我的是在阿里云备案的&#xff0c;所以直接去阿里云比较方便快捷&#xff09; 然后直接上传营业执照副本、ICP备案截图、…

linux字体如何删除不了,如何彻底替换Ubuntu下Chrome字体(清除楷体字)

刚刚升级到了Ubuntu 11.04,chrome也跟进到了11.0.696.57&#xff0c;让人纠结的依旧是Chrome内的字体&#xff0c;在首选项-->高级选项-->自定义字体并不能解决所有问题&#xff0c;还是有些网站看上去是令人纠结的楷体。在你的用户文件夹下(比如用户名为libai)选择显示所…

使用默认方法进行接口演化–第二部分:接口

引入了默认方法以启用接口演进。 如果向后兼容是不可替代的&#xff0c;则仅限于向接口添加新方法&#xff08;这是它们在JDK中的唯一用法&#xff09;。 但是&#xff0c;如果希望客户端更新其代码&#xff0c;则可以使用默认方法逐步演化接口而不会引起编译错误&#xff0c;从…

【APICloud系列|37】百度开放平台应用+,提升用户下载量操作步骤

进入百度应用开放平台后台&#xff0c;按图中步骤点击。 接入步骤 这个首先要准备和应用名称一致的百家号 链接地址&#xff1a; 进入官方号平台&#xff1a;http://gfh.baidu.com/ 填写官方的ID以及联系人的手机号即可&#xff0c;最后点击提交。

linux 命令 抛后台,Linux 后台执行命令

场景python 代码&#xff0c;打印1~3000&#xff0c;每秒打印一次## file_name: test.pyimport timei 0while 1:time.sleep(1)i i 1print(i)if i > 3000:break问题&#xff1a;直接在终端执行&#xff1a;python test.py, 需要在这个终端一直等&#xff0c;没法干别的事了…

【JSP】JSP与oracle数据库交互案例

************************************************************************ ****原文&#xff1a;blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ 本案例为咖啡销售情况录入查询系统 一、数据输入系统&…

【APICloud系列|34】上架华为应用市场缺少免责函?

针对华为应用市场&#xff0c;不管提交的是什么类型的应用&#xff0c;都应该提交免责函&#xff0c; 需要提前下载模板进行盖章后&#xff0c;转成图片上传。 免责函模板如下&#xff1a; 被拒绝的信息如下&#xff1a; 再次将免责函提交上去就没啥问题啦&#xff0c;因为其…

Property Animator 属性动画概述与示例

Property Animation 属性动画 属性动画是一个强大的框架&#xff0c;它几乎可以让你的所有东西做动画&#xff0c;你可以随着时间的推移通过更改他们的属性来定义动画&#xff0c;无论它是否绘制在屏幕上&#xff0c;一个属性动画是在指定的时间内去改变属性&#xff08;一个对…

注册服务号、订阅号流程

进入微信公众平台,选择注册类型,订阅号/服务号 填写基本信息 选择类型 选择订阅号或者服务号

【APICloud系列|33】移动应用软件加固步骤,适合所有的安卓应用市场

在腾讯开放平台下载应用加固工具legutools 下载安装打开 点击获取API密钥。链接: https://cloud.tencent.com/developer/article/1385239 一、登录腾讯云账号

怎么把图片内存变小尺寸保持不变呢。

在好多应用平台要求尺寸多少*多少&#xff0c;大小<50kb. 缩小图片的内存占用&#xff0c;但尺寸即分辨率不变&#xff0c;可以改变压缩的质量来实现。下面以PS为例&#xff1a; 1、用PS打开图片&#xff0c;然后选择文件菜单里的存储为&#xff0c;格式选择png。 2、选择…

【Java必备资料包】

适合所有大厂java开发工场师。 链接&#xff1a;https://pan.baidu.com/s/1wRxRDCGvex_G2aCZ6W57vw 提取码&#xff1a;e9xu

SaaS系列介绍之十一: SaaS商业模式分析

1 配置模式 中国企业很多是人治&#xff0c;管理弹性非常大&#xff0c;公司的政策经常变化&#xff0c;管理流程、业务变化也非常大&#xff0c;发展也非常快;一个公司今年是10个人&#xff0c;明年是100个人&#xff0c;后年可能是1000人。管理机制、方法处于经常变化的状态&…

真机x86 android分辨率,Android-x86入门之--启动参数设置

之前的文章里面我也有提到分辨率的设置&#xff0c;这里就详细说下。Android-x86启动的时候有四个选项&#xff0c;大家都知道&#xff0c;第一个是高密度&#xff0c;第二个是低密度&#xff0c;两个启动之后的效果是不一样的&#xff0c;一个图标大&#xff0c;一个小&#x…