安卓事件机制与页面跳转

      昨天学习了安卓开发中实现点击一个按钮实现页面的跳转

      首先点击一个按钮就会触发动作,这里就是给按钮加监听。一般对于事件监听,我们需要了解以下三类对象:事件源、事件、事件监听器,一般在安卓里,事件源就是指在哪个组件或窗口上发生动作,这里的事件源就是按钮;而事件则是指在这个事件源上发生了什么事情,如点击、悬浮等等;事件监听器则是针对发生的事件作出相应的反应,这里就是指点击按钮后发生页面的跳转。在 activity_main.xml文件中已经存在了按钮,我们无需再去实例化一个,而只要找到那个按钮并对它实现监听即可。因此,可以通过R文件将两者联系起来,Activity中有一个findViewById()方法可以由此获取按钮的id从而得到这个按钮,示例代码如下:

1 //通过findViewById方法找到控件并强制转型,这里之所以能强制转型是因为   Button是继承自view
2 Button  LoginButton  = (Button)this.findViewById(R.id.btnLogin);
3 
4 //创建一个监听器对象,并把这个activity即this传过去
5 ClickListener btnListener = new ClickListener(this); 
6 
7 //给按钮添加监听器
8 LoginButton.setOnClickListener(btnListener);

注意:这里是使用了外部类定义事件监听器类。

 

    事件监听器类是实现了OnClickListener接口,并重写了它里面的onClick(View v)方法。我们点击了登录按钮后就执行这个方法,在这个方法里,首先要获取用户输入的信息,并进行验证,满足要求后才可启动页面跳转。其中用到了信息提示框,用到的方法是Toast(),其中的三个参数分别表示的含义是,第一个:上下文对象;第二个:出现的提示内容;第三个:提示的时间长短。

 1 public void onClick(View v) {
 2    //找到用户名输入框控件对象.获取用户名并将其转换为字符串型
 3    EditText  editUserName  =(EditText)la.findViewById(R.id.editUserName);
 4    String username = editUserName.getText().toString();
 5 
 6   //找到密码输入框控件对象,获取密码并转换为字符串
 7   EditText  editPassword  =(EditText)la.findViewById(R.id.editPassword);
 8   String password = editPassword.getText().toString();
 9 
10   //判断用户名是否为空
11   if("".equals(username)){
12      //在界面上显示提示错误信息
13      Toast.makeText(la,"请输入用户名!", Toast.LENGTH_SHORT).show();
14      return;
15 }
16   if("".equals(password)){
17      Toast.makeText(la,"请输入密码!", Toast.LENGTH_SHORT).show();
18      return;
19 }
20    if("admin".equals(username) && "123456".equals(password)){
21    //在界面上显示登录成功信息
22    Toast.makeText(la,"登录成功!", Toast.LENGTH_LONG).show();
23 } else {
24    Toast.makeText(la,"对不起!用户名或密码错误!", Toast.LENGTH_LONG).show();
25 } 
26 }
页面跳转是从当前的Activity对象跳到另一个Activity对象,这里我们需要用到Intent对象,通过在创建Intent对象的时候给Intent设置不同的参数让系统知道我们需要跳转到哪一个界面
所以在登录成功信息后面再加上下列代码

1
//创建Intent对象,给它参数 2 //Intent 构造方法的第一个参数是当前界面的 Activity 对象,第二个参数是要跳转到另一个界面对应的 Activity 类 3 Intent  intent  =  new  Intent(la,SecondActivity.class); 4 5 //也可向下一个界面传递参数 6 intent.putExtra("msg",  "我来自第一个Activity"); 7 8 //启动跳转 9 la.startActivity(intent);

 

 

 

     

转载于:https://www.cnblogs.com/tyingxy/p/5244332.html

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

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

相关文章

适配Win11!Edge重磅更新来袭

夜聊近日,微软对 Microsoft Edge 浏览器进行了两次重大更新。Microsoft Edge 95 正式版主要更新内容:版本号:95.0.1020.301.Microsoft Edge 右键菜单现已适配 Windows 11 风格,采用 Acrylic 和圆角设计,更加美观。2.你…

php 重定向到https,php – Laravel 5 – 重定向到HTTPS

您可以使它与中间件类工作。让我给你一个想法。namespace MyApp\Http\Middleware;use Closure;class HttpsProtocol {public function handle($request, Closure $next){if (!$request->secure() && env(APP_ENV) prod) {return redirect()->secure($request-&g…

被清华免试录取的围棋天才,横扫60位围棋大师的最强AI,竟然都输给了高中生!?...

全世界只有3.14 % 的人关注了爆炸吧知识术业有专攻前不久,漫改剧《棋魂》的热播,让围棋狠狠火了一把。图片来源于豆瓣火到什么程度?有网友看完直接就打开了B站的围棋教程。但大部分网友,学不到几天就弃坑了,理由是&…

android项目中values中几个文件的作用

最近反编译了几个Android软件,发现一些以前未用到的资源文件:ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id…

JS特效代码

1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后&#xff0c;产生该文件 Onchange:当文字值改变时&#xff0c;产生该事件 Onselect:当文字加亮后&#xff0c;产生该文件 <input type"text" value"mm" οnfοcus"if…

Android之如何解决Listview里面的值出现了2次

Listview里面的值出现了2次 不废话,先爆照 我去,这个listview里面的值怎么出现了2次,一直在找原因,后来解决了,先看下我的部分代码吧。 这是mainactivity.xml内容 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools=…

php prettyprinter,gdb运行时错误:prettyprinter已注册:libstdc++v6

我的全球分销银行与wiki中的相同&#xff0c;只是我将路径替换为打印机.py. 在pythonimport syssys.path.insert(0, C:/Program Files (x86)/mingw-builds/x32-4.8.1-posix-dwarf-rev3/mingw32/share/gcc-4.8.1/python/libstdcxx/v6)from printers import register_libstdcxx_p…

C# 10 新特性 —— 插值字符串优化

C# 10 新特性 —— 插值字符串优化Intro字符串应该是我们平时使用的最多的一个类型&#xff0c;从 C# 6 开始我们开始支持了插值字符串&#xff0c;使得我们可以更方便的进行字符串的操作&#xff0c;现在很多分析器也推荐我们使用插值这种写法&#xff0c;这能够使得我们的代码…

电影院为何有散落的青瓜?

1 摄像头&#xff1a;你套个袋子我就认不出来了吗&#xff1f;▼2 路边惊现大熊猫&#xff01;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 好一个驼小姐&#xff08;via.豆瓣社死小组满杯草莓&#xff09;▼4 学弟的理解也不是无迹可寻▼5 台湾人过生日的方…

【ACM】nyoj_305_表达式求值_201308081018

表达式求值时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后&#xff0c;最近又学会了一些简单的函数求值&#xff0c;比如&#xff0c;它知道函数min(20,23)的值是20 &#xff0c;add(10,98…

HDU 4267 A Simple Problem with Integers [树状数组]

根据%ka中a和k的不同组合建立55棵树状数组&#xff0c;每次修改操作只对其中1棵树状数组进行操作&#xff0c;每次查询对其中10棵树状数组统计增量和。 1 #include <string.h>2 #include <stdio.h>3 #define MAXN 500054 int n,q,x[MAXN];5 int ta,tb,cc,k,op;6 in…

字符串之旋转词

题目: 如果一个字符串str,把字符串str前面任意的部分挪到后面形成的字符串叫做str的旋转词。比如str="12345",str的旋转词有"12345"、"23451"、"34512"、"45123"、和"51234"。给定两个字符串a和b,请判断a和b…

Ecshop:后台添加新功能栏目以及管理权限设置

一、添加菜单项打开 /admin/includes/inc_menu.php文件(后台框架左边菜单)&#xff0c;在最后添加一行如下&#xff1a;1$modules[17_other_menu][sns_list] sns_list.php?actlist;ecshop默认一级菜单项有16项&#xff0c;所里这里的例子从17开始。当然这个key可以随便取的&a…

年轻人不讲武德有多可怕?

1 孩子&#xff0c;走你&#xff01;▼2 这都是什么阴间燃料&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 年轻人不讲武德&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 当你偷瞄喜欢的男生▼5 贝多芬&#xff1a;我入土这么都多年了&#xff08;…

使用C#体验函数式编程之——Partial application(局部应用)

函数式编程函数式编程是一种编程范式&#xff0c;着力于避免共享状态、可变数据和副作用产生&#xff0c;函数是第一等公民。这与面向对象编程相反&#xff0c;在面向对象编程中&#xff0c;应用程序状态通常与对象中的方法共享和共存。函数式编程是声明式的而不是命令式的&…

poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)

感觉最短路好神奇呀&#xff0c;刚开始我都 没想到用最短路 题目&#xff1a;http://poj.org/problem?id1860 题意&#xff1a;有多种从a到b的汇率&#xff0c;在你汇钱的过程中还需要支付手续费&#xff0c;那么你所得的钱是 money&#xff08;nowmoney-手续费&#xff09;*r…

如何解决Maven依赖本地仓库eclipse报错的问题

一、应用场景 为了使用maven强大的包依赖管理和项目管理功能&#xff0c;故在项目中使用maven2作为项目建构工具。但是我的项目在内网构建&#xff0c;为了能使用maven2&#xff0c;只能使用本地仓库依赖策略。但是&#xff0c;有时候明明本地仓库确确实实存在相应的依赖包&…

windows socket 简单实例

Windows下Socket编程主要包括以下几部分&#xff1a;服务端 1、初始化Windows Socket库。 2、创建Socket。 3、绑定Socket。 4、监听。 5、Accept。 6、接收、发送数据。客户端 1、初始化Windows Socket库。 2、创建Socket。 3、连接Socket。 4、接收、发送…

如何将 image 转成 base64 字符串?

咨询区 vaj90我的项目中有一个需求&#xff0c;需要将 base64 格式的字符串 data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD.. 转成 image 格式&#xff0c;请问我该如何实现&#xff1f;回答区 Patashu&#xff1a;我写了一个 image 和 base64 相互转换的帮助类&#xff…

oracle执行命令显示2,Oracle数据库执行脚本常用命令小结

1. 执行一个SQL脚本文件复制代码 代码如下:sqlplus user/passservicename或复制代码 代码如下:SQL>start file_names或复制代码 代码如下:SQL> file_name我们可以将多条sql语句保存在一个文本文件中&#xff0c;这样当要执行这个文件中的所有的sql语句时&#xff0c;用上…