安卓事件机制与页面跳转

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

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

 

 

 

     

posted on 2016-03-05 10:58  tyingxy  阅读(1109)  评论(0编辑  收藏  举报

导航