界面之间的跳转
偷偷小懒,今天就不再创建一个新的工程实现所描述的内容了。我使用的第一个界面就是上篇博文介绍的登录界面,依照我们平时的认知,在当前界面上未发生任何动作的时候,界面是不会发生任何变化的。但当人为在某些图形组件上发生了一定的动作之后,可能会使页面发生跳转或者更改现象。这不难让我们想到事件这一概念。
图形组件添加监听器
根据上篇博文,大家了解到设计图形界面可以通过拖拽组件或布局、修改代码实现。当需要为图形界面添加监听器或者实现其他非图形化功能时,我们只能回归到原来的编程方式——代码编程。一般我们进行编程的文件在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():销毁
相关推荐
上一篇文章android 简单地设置Activity界面的跳转动画讲了简单的activity界面之间的跳转,并且使用的是android内置的一些动画,此章就小提一下如何自己写一些动画来进行跳转。 按例,还是上一下效果:
根据`position`,我们可以启动相应的Activity,实现界面跳转。 ### 6. 进阶优化 - **复用视图**:为了提高性能,ListView使用了视图缓存机制。在`getView()`中,我们检查`convertView`是否为空,如果非空,则重用...
5. 数据传递:在界面之间跳转时,可能需要传递数据。可以使用静态类、Singleton模式或者Unity的PlayerPrefs来实现数据在不同界面间的共享。 6. MVC的扩展:对于更复杂的应用,可以考虑引入MVP(Model-View-...
LabVIEW的函数选板提供了大量预定义的函数和工具,其中的“VI服务”类别包含了打开、关闭和引用VI的相关函数,可用于实现界面之间的跳转。 5. **VI引用(VI Reference)**: VI引用是LabVIEW中表示VI对象的特殊...
通过定义信号来响应用户操作,然后连接到适当的槽函数来处理这些事件,我们可以轻松地在不同的界面之间进行切换。这个"qt界面跳转切换"的示例就是一个很好的实践,它展示了如何在QT应用中构建用户友好的导航结构。
在 LabVIEW 中实现界面跳转需要通过按钮控件和事件结构来实现界面之间的链接。下面将详细介绍 LabVIEW 中界面跳转的实现方法。 首先,我们需要从子 VI 的框图开始。打开子 VI 的前面板,在前面板中右键打开函数选版...
这个"vb.rar"压缩包包含了一个VB登陆界面的程序代码以及如何在不同界面之间跳转的示例代码,这对于初学者或者正在开发桌面应用程序的人来说是非常有价值的资源。 首先,让我们讨论VB登陆界面的设计。一个标准的登陆...
这里提到的“只需更换背景图片来实现鼠标,滑过、点击,之间的转换”是一种常见做法,通常涉及以下几个方面: 1. 使用`ControlTemplate`来定义按钮的整体外观,包括正常状态、鼠标悬停状态和按下状态下的视觉元素。...
本教程将聚焦于"Python简易界面跳转"这一主题,讲解如何使用Python来实现GUI应用中的页面或窗口之间的切换。我们将主要探讨以下几个关键知识点: 1. **Python GUI库**:Python提供了多种库用于创建GUI,如Tkinter、...
本文将深入探讨“WPF页面界面跳转”这一主题,结合提供的文件列表,我们将分析如何在WPF应用中实现多个窗口和页面之间的导航。 1. **WPF界面设计** WPF允许开发者使用XAML(Extensible Application Markup ...
本教程将专注于如何在Qt环境中实现多个界面之间的有效跳转,同时保持主窗口的稳定状态。 首先,理解Qt中的界面主要由QMainWindow、QWidget、QDialog等类构成。QMainWindow通常作为主窗口,提供菜单栏、工具栏和状态...
总的来说,Qt提供了强大的工具来实现多界面应用的开发,包括登录、主界面和设置界面之间的跳转。理解并熟练掌握这些技术,可以让你创建出功能丰富且用户友好的跨平台应用。在实际项目中,还应考虑错误处理、界面动态...
- 在WinForm中,界面跳转通常意味着在不同窗体之间切换。这可以通过调用Form的Show()或ShowDialog()方法来实现。例如,当用户点击某个按钮时,可以新建一个Form实例并显示出来。 - 如果使用TabControl,可以在事件...
在PyQt5中,创建用户界面(UI)并实现界面之间的跳转是常见的需求。本文将详细介绍如何使用PyQt5中的按钮控件实现界面的切换,包括不使用Qt Designer的纯代码方法和利用Qt Designer生成的UI文件进行编程的方法。 ...
在Android系统中,多个Activity可以组成一个应用的工作流程,它们之间可以通过Intent进行通信,实现界面间的跳转。 二、Intent详解 Intent是Android中用于表达意图的对象,它用于连接不同的组件,如Activity、...
Android Intent 跳转到系统应用中的拨号界面、联系人界面、短信界面 在 Android 开发中,Intent 是一个非常重要的概念,它允许不同的应用程序之间进行交互和通信。在本文中,我们将探讨如何使用 Intent 跳转到系统...
例如,常见的返回按钮、底部导航栏和汉堡菜单等元素,都是为了让用户能够轻松地在各个界面之间跳转。 "界面的切换是非快捷好学"这一标签进一步突出了快速和易学这两个关键点。为了实现这一点,开发者和设计师需要...
在Android应用开发中,界面跳转和数据传递是至关重要的环节。`Intent`是Android系统中用于启动Activity、BroadcastReceiver等组件以及在它们之间传递数据的主要工具。本篇将深入探讨如何利用`Intent`实现界面间的...
接下来,我们将深入探讨Android应用中如何进行界面跳转。 首先,`Activity`是Android中的一个核心组件,它代表了应用的单一屏幕,可以看作是应用的一个窗口或一个界面。每个Activity都有自己的生命周期,包括创建、...
在Android应用开发中,界面间的跳转是必不可少的操作,它使得用户可以在不同的功能之间自由切换。本篇文章将详细探讨两种主要的界面跳转方法:`startActivity(Intent)`和`startActivityForResult(Intent, int)`。 ...