安卓事件机制与页面跳转
昨天学习了安卓开发中实现点击一个按钮实现页面的跳转。
首先点击一个按钮就会触发动作,这里就是给按钮加监听。一般对于事件监听,我们需要了解以下三类对象:事件源、事件、事件监听器,一般在安卓里,事件源就是指在哪个组件或窗口上发生动作,这里的事件源就是按钮;而事件则是指在这个事件源上发生了什么事情,如点击、悬浮等等;事件监听器则是针对发生的事件作出相应的反应,这里就是指点击按钮后发生页面的跳转。在 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);