界面之间的跳转

界面之间的跳转

 

偷偷小懒,今天就不再创建一个新的工程实现所描述的内容了。我使用的第一个界面就是上篇博文介绍的登录界面,依照我们平时的认知,在当前界面上未发生任何动作的时候,界面是不会发生任何变化的。但当人为在某些图形组件上发生了一定的动作之后,可能会使页面发生跳转或者更改现象。这不难让我们想到事件这一概念。

 

图形组件添加监听器

 

根据上篇博文,大家了解到设计图形界面可以通过拖拽组件或布局、修改代码实现。当需要为图形界面添加监听器或者实现其他非图形化功能时,我们只能回归到原来的编程方式——代码编程。一般我们进行编程的文件在src文件夹下的包下,找到对应界面的Activity.java文件,对组件大小没有要求的时候,可以在OnCreate()——创建界面的同时获得组件。

package com.example.qqlogon;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;

public class LogonActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_logon);
		
		// 获取登录按钮对象
		Button butLogon = (Button)this.findViewById(R.id.Logon);
		Button butReset = (Button)this.findViewById(R.id.reset);
		// 创建实现监听器方法的类
		LogonListener ll = new LogonListener(this);
		// 给按钮对象添加监听器方法,并绑定监听器对象
		butLogon.setOnClickListener(ll);
		butReset.setOnClickListener(ll);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.logon, menu);
		return true;
	}
}

 

package com.example.qqlogon;

import android.content.Intent;
import android.view.View;
import android.widget.Button;

/**
 * 定义实现OnClickListener接口抽象方法的类
 * 
 * @author Daily
 * 
 */
public class LogonListener implements android.view.View.OnClickListener {
	// 声明LogonListener属性
	private LogonActivity la;

	/**
	 * LogonListener构造方法
	 * 
	 * @param la
	 *            当前页面
	 */
	public LogonListener(LogonActivity la) {
		this.la = la;
	}

	/**
	 * @Override 实现点击动作的方法
	 * @param v
	 *            事件源对象
	 */
	public void onClick(View v) {
		// 仅给按钮添加了监听器,故事件源一定是按钮对象
		Button but = (Button) v;
		// 获取按钮上的文本
		String str = but.getText().toString();
		// 对文本进行判断
		if (str.equals("登录")) {
			System.out.println("点击的是登录按钮");
		} else if (str.equals("重置")) {
			System.out.println("点击的是重置按钮");
		}
	}

}

 

界面跳转

 

在安卓中,我们会用到Intent这个类来实现实现界面的跳转,并且Intent组件能够将参数从A-Activity传递到B-Activity。下面是实现页面跳转的步骤:

1.创建Intent对象

2.设置出发地——>目的地,调用.setClass(context packageContext, class cls)方法。其中packageContext为上下文对象,即当前界面对象【或称为出发地】,cls需要跳转的界面类【或称为目的地】。(在这里,我们也可以说是将参数packageContext,即A-Activity对象传递到cls,即B-Activity中)

3.启动Activity.startActivity(intent);

代码修改为:

public void onClick(View v) {
		// 仅给按钮添加了监听器,故事件源一定是按钮对象
		Button but = (Button) v;
		// 获取按钮上的文本
		String str = but.getText().toString();
		// 对文本进行判断
		if (str.equals("登录")) {
			// 创建intent对象
			Intent intent = new Intent();
			// 创建目标路径
			intent.setClass(la, SecondActivity.class);
			// 当前页面启动这个目标路径对象
			la.startActivity(intent);
		} else if (str.equals("重置")) {
			System.out.println("点击的是重置按钮");
		}
	}

 

 Activity生命周期

 

最先打开app的时候:

点击登录按钮之后,跳转页面未调用前一个Activity.finish(),且此时第二个界面充满屏幕:

当点击返回后:

再次按返回:

但是长按home键,发现进程仍未关闭:

经上面测试可以得出下述结论:

Activity生命周期:

 

/ ********** 第一个阶段——运行 **********/

OnCreat():创建——加载安卓页面,得到页面上的组件,给组件添加监听器方法。 第一个Activity

OnStart():启动——能够显示页面

OnResume():交互——能够放在栈的最顶端

 

/ ********** Activity的第二个阶段——暂停/停止 **********/

// 跳转到另外一个页面,将原来的Activity暂停,调用另一个Activity的第一阶段的方法

OnPause():暂停 第一个Activity

OnCreat():创建——加载安卓页面,得到页面上的组件,给组件添加监听器方法。 第二个Activity

OnStart():启动——能够显示页面

OnStop():停止 第一个Activity(新打开的Activity如果没有占满整个屏幕时,不会调用此方法——仅为熊哥认知,没有得到代码证明!!!)

【OnDestoy():销毁——调用finish方法【登录界面】】

 

/ ********** Activity第三阶段——销毁 **********/

OnPause():暂停 第二个Activity

OnReStart():再次启动 第一个Activity

OnStart():启动——能够显示页面

OnResume():交互——能够放在栈的最顶端

OnStop():停止 第二个Activity

OnDestoy():销毁

  

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值