[Android Training视频系列]1.4 Starting Another Activity

STM32F407嵌入式WebServer登录注册实现指南 嵌入式WebServer不仅是HTTP协议栈的移植,更是面向产线安全与可用性的工程实践。其核心在于在资源受限设备上构建身份认证能力——通过LwIP精简裁剪、裸机SHA-256密码哈希、SRAM模拟用户存储等关键技术,实现内存可控(RAM<8KB)、无文件系统依赖、明文零落地的安全登录注册闭环。该方案直面STM32F407+LAN8720A组合的PHY初始化、TCP缓冲区管理、URL解码、会话Token轻量设计等真实瓶颈,适用于工业HMI、传感器配置界面等需‘敢用’而非仅‘能跑’的嵌入式网络场景。 阅读详情
1.主要内容
本小结在1.3节的基础上,继续完善代码,会书写Button响应事件,在响应事件中新建一个Intent去启动另外一个Activity。
2.视频讲解
http://www.eyeandroid.com/thread-11210-1-1.html

3.翻译参考


Respond to the Send Button-响应Send(发送)按钮

响应按钮的on-click(点击)事件,打开main.xml布局文件然后在Button(按钮)元素中添加android:onclick属性:

<Button 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

android:onclick属性的值:sendMessage就是当用户点击你屏幕按钮时触发方法的名字。

添加相应的方法在MyFirstActivity类中:

 /** 当用户点击Send按钮时调用 */
 public void sendMessage(View view) {
    // 做一些相应按钮的操作
 }
 

注意:在Eclipse中,按Ctrl + Shift + O 可以导入缺失的类(在Mac中使用Cmd + Shift + O )


请注意,为了让系统能够将这个方法(你刚在MyFirstActivity中添加的sendMessage方法)与在android:onClick属性中提供的方法名字匹配,它们的名字必须一致,特别是,这个方法必须满足以下条件:

  • 公共的
  • 没有返回值
  • 有一个唯一的视图(View)参数(这个视图就是将被点击的视图)

接下来,你可以在这个方法中编写读取文本内容的代码,并将该内容传到另一个Activity


Build an Intent-构建一个Intent(意图)

Intent(意图)是在不同组件中提供运行时连接的对象(比如两个Activity)。Intent(意图)代表一个应用"想去做什么事",你可以用它做各种各样的任务,不过大部分的时候他们被用来启动另一个Activity。在sendMessage()方法中创建一个Intent(意图)并启动名为DisplayMessageActivity的Activity:

Intent intent = new Intent(this, DisplayMessageActivity.class);

在这个Intent构造函数中有两个参数: 第一个参数是Context(上下文)(之所有可以用this是因为当前Activity(MyFirstActivity)是Context的子类) 系统需要传递Intent的应用组件的class对象(在这个案例中,这个activity应该被启动)

注意:如果你正在使用的是类似Eclipse的IDE,这里对DisplayMessageActivity的引用会报错,因为这个类还不存在;注意这个错误,你很快就要去创建这个类了。

一个Intent(意图)不仅允许你启动另一个Activity,同时也可以传递一个数据包到另一个Activity,ok,用findViewById()方法得到EditText元素,然后将它的信息添加到Intent(意图):

 Intent intent = new Intent(this, DisplayMessageActivity.class);
   EditText editText = (EditText) findViewById(R.id.edit_message);
   String message = editText.getText().toString();
   intent.putExtra(EXTRA_MESSAGE, message);

Sending an intent to other apps-发送intent(意图)到其他app(应用)

在这课中创建的Intent(意图)包含了一个非常明确的意图,因为它指定了一个Intent需要的精确app(应用)组件; 然而,在Intent没有指定明确的组件时,Intent(意图)是隐式的,但它允许安装在设备上的任何应用来回应, 只要这个应用满足在各个Intent(意图)参数中指定的action(行动)的元数据规范,想了解更多信息, 可以去看Interacting with Other Apps课程

Intent(意图)可以传递各种各样的以键值对形式出现的集合,可以称它为extras,putExtra()方法用字符窜作为它的key,第二个参数作为它的值为了在下一个Activity中获取extra(附加的)数据,你应该定义一个公共常量作为key(键),ok,在MyFirstActivity类的顶部定义一个名为EXTRA_MESSAGE的常量:

 public class MyFirstActivity extends Activity {
    public final static String EXTRA_MESSAGE = "com.example.myapp.MESSAGE";
    ...
   }

为使extras键唯一,使用你应用的包名作为extras键的前缀是一个很好的做法,因为你的应用可能需要跟其他应用交互。


Start the Second Activity-启动第二个Activity

启动一个Activity,你只需要调用startActivity()方法然后传入你的Intent(意图)系统接收到你的请求后会实例化在Intent中指定的Activity,包含这个方法拥有的,被Send(发送)按钮调用的完整sendMessage()方法现在就像这样:

  /** 当用户点击Send按钮时调用 */
  public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
  } 

现在你需要去创建一个DisplayMessageActivity支持程序能够执行起来


Create the Second Activity-创建第二个Activity

在你的项目中,在src/<package-name>/路径下新建一个名为DisplayMessageActivity.java的类。

注:在Eclipse中,在src/路径下点鼠标右键选中New > Class,输入DisplayMessageActivity,并且指定继承android.app.Activity 。

在这个类中,添加onCreate()回调方法:

public class DisplayMessageActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
  }

所有Activity的子类都必须实现onCreate()方法,当系统创建Activity实例时就会调用该方法,这个方法是你必须定义activity布局以及初始化必要activity组件的地方。



Add it to the manifest-将Activity加入manifest(清单)文件

你必须在manifest(清单)文件,AndroidManifest.xml中使用<activity>元素声明你所有的Activity;因为DisplayMessageActivity是由一个明确的Intent(意图)调用的,所以它不需要任何intent filters(意图过滤器)(intent filters,你可以在manifest文件中声明MyFirstActivity的地方看到)如此DisplayMessageActivity就可以在<application>元素中用一句很简单的代码声明;

 <application ... >
    <activity android:name="com.example.myapp.DisplayMessageActivity" />
    ...
 </application>
 

这个app(应用)现在就可以运行了,因为第一个Activity中的Intent现在可以解析DisplayMessageActivity类了,如果你现在运行app,点击Send(发送)按钮启动,第二个Activity,它不会显示任何东西;


Receive the Intent-获取Intent(意图)

每一个被Intent调用的Activity,不管用户将它导航到哪,你都可以在启动的Activity中通过getIntent()方法得到Intent以及Intent包含的数据。在DisplayMessageActivity类的onCreate()方法中,得到intent以及MyFirstActivity提供的附加信息:

 Intent intent = getIntent();
 String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);


Display the Message-显示信息

在屏幕上显示信息,创建一个TextView部件,并且使用setText()设置它的值,然后通过setContentView()方法将TextView作为root(根)视图添加到Activity的布局。

DisplayMessageActivity完整的onCreate()方法现在看起来如下:

@Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    // 从intent中获取信息
    Intent intent = getIntent();
    String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
 
    // 创建TextView对象
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);
 
    setContentView(textView);
 }

现在你可以运行app,在文本中输入信息,点击Send(发送)按钮,ok,现在就可以在第二Activity上看到信息了。

firstapp.png

如图:两个Activity在同一个应用中,运行在Android4.0的版本上


word 2013 长篇文档排版案例教程 office 2013 制作长文格式模板 阅读详情

相关推荐

避开这5个坑!STC8H DMA串口通信的实战避坑指南(115200波特率实测)

本文深入解析了STC8H单片机利用DMA实现稳定全双工串口通信的实战要点。针对115200高波特率场景,详细拆解了DMA-UART架构、关键寄存器配置、时钟精度计算、缓冲区管理及中断协同等核心环节,并提供了具体的避坑指南和调试方法,帮助开发者构建高效可靠的通信链路。

melon的博客 675

Activity启动另一个Activity的方式

一个应用程序经常有多个Activity,它们有的时候

yiqitony的专栏 2083

手把手教你搭建硬件在回路(HIL)仿真系统:从Simulink建模到实时测试

本文详细介绍了如何从零开始搭建硬件在回路(HIL)仿真系统,涵盖Simulink建模、实时仿真、代码生成及调试等关键步骤。通过具体配置示例和优化技巧,帮助开发者解决复杂控制系统验证中的技术难题,提升半实物仿真的效率和可靠性。

weixin_30952535的博客 445

如何从Android中的另一个应用程序启动活动

我想从我的Android应用程序启动已安装的软件包。 我认为可以使用意图,但是我没有找到一种方法。 有链接,在哪里可以找到信息?

asdfgh0077的博客 620

蓝桥杯FPGA赛道积分赛

代码如下: 按键驱动 代码如下 按键驱动 代码如下: 顶层文件 按键驱动 数码管驱动 声明:本代码借鉴网络资料,如有侵权和错误请联系作者删除。我是从寒假开始备赛的,由于我基础不行,备赛过程中也是混混呃呃的,备赛效率不高,总体来说备赛不认真,有点拖拉,但是最后我也坚持备赛到了今天,在备赛过程中,即复习了旧的东西,也学到了新的东西,总结起来还是有点收获的,后天北京、天津、河北地区就要进行省赛了,我会全力以赴,不管结果怎么样,尽力就好,最后祝大家都能

weixin_69804913的博客 1995

Framelet Transform

需要定义 Framelet 的基函数。Framelet 基函数可以是通过组合不同的小波函数生成的。# 这里可以定义 Framelet 基函数,例如一些小波基函数的线性组合# 这是一个示例函数,具体实现需要根据具体的 Framelet 设计# 示例:正弦函数。

qq_33009429的博客 1212

Android-启动一个新活动的方法

启动一个新的活动的方法 先使用Intent构建出当前的意图 使用startActivity()和startActivityForResult()两种方法启动。 假如我们要从一个FirstActivity向SecondActivity跳转,并且携带很多参数,我们一般有下边这种写法 Intent intent = new Intent (FirstActivity.this,SecondActiv

sinat_21423503的博客 873

高精度计算Π的值(C语言)

题目要求 限制使用双向链表作存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后500位),高精度计算PI值。可以利用反三角函数幂级展开式来进行计算。 输入5 输出3.14159 思路分析 反三角函数幂级展开式 由公式可以看出,只要计算出来每一个R(n)的值再相加取二倍就可以得到Π的值。 经过推算,要是令R(1)=2,只需要将每个R(n),相加即可。 因...

weixin_46251155的博客 8033

thymleaf基础 句法格式

1、在html页面中引入thymeleaf命名空间,即&lt;html xmlns:th=http://www.thymeleaf.org&gt;&lt;/html&gt;,此时在html模板文件中动态的属性使用th:命名空间修饰  2、引用静态资源文件,比如CSS和JS文件,语法格式为“@{}”,如@{/js/blog/blog.js}会引入/static目录下的/js/blog/blog.js...

geomon的博客 872

计算机组成原理(第三版)唐朔飞-第七章指令系统-课后习题

机器字长是指CPU一次能处理数据的位数通常与CPU的寄存器位数有关。指令字长是指机器指令中二进制代码的总位数。存储字长是指存储单元中存放二进制代码的总位数。三者可以相等也可以不等视不同机器而定。答:OP(4位)A1(6位)A_1(6位)A1​(6位)A2(6位)A_2(6位)A2​(6位)设二地址指令格式为该指令系统的基本格式,4位操作码共有16种编码,其中13种用来定义二地址指令,还剩3种可用作扩展标志。一地址指令条数=3∗26=192。

weixin_45735391的博客 7万+

基于Claude Code的 规范驱动开发(SDD)指南

传统的AI辅助开发,如同手工作坊,我们向AI描述想法,它给我们零散的部件,我们再手动打磨、组装。这个过程充满了不确定性、信息损耗和重复劳动。本指南将尝试引领您进入软件开发的“工业时代”。在这里,

形上得其象,形下合于数;阴阳自济,玄理自明。 2750

活动的四种启动模式详解

活动的启动模式一共有4种,分别是:1.standard 2.singleTop 3.singleTask 4.singleInstance。我们可以在AndroidManifest.xml当中通过<activity>标签内的android:launchMode属性来选择合适的启动模式,下面对四种模式进行详细的说明。 1.standard模式 standard...

yuncaidaishu的博客 1324

大数据开发工程师必备面试题与解答

大数据开发岗位一直是互联网行业的热门方向,面试过程中既考察基础知识,也关注实际项目经验和问题解决能力。本文整理了等核心组件相关的高频面试题及参考解答,帮助大家高效准备面试。大数据面试不仅考察基础理论,更看重项目经验与问题解决能力。本文涵盖了等核心知识点及调优思路,希望能帮助你在面试中游刃有余。

X2829352498的博客 304

[Android Training视频系列]2.1 Starting an Activity

1.主要内容  本小节首先对Activity的各个生命周期作简单介绍,然后介绍如何设置Main Activity,最后讲解创建和销毁Activity。 2.视频讲解 http://www.eyeandroid.com/thread-11253-1-1.html 3.翻译参考 启动Activity 与其他在应用程序中由main()函数作为开端不同,Andr

664

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[Android Training视频系列]2.3 Stopping and Restarting an Activity

1.主要内容 本小节介绍onStop与onRestart以及onStart的使用,通过本讲我们能学会应该在onStop与onStart里面执行什么样的操作。 2.观看视频讲解 http://www.eyeandroid.com/thread-11346-1-1.html 3.翻译参考 停止与重启Activity 在activity生命周期中,恰当的停止与重启ac

703

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[Android Training视频系列]2.4 Recreating an Activity

1.主要内容 本讲讲解onSaveInstanceState与onRestoreInstanceState的使用。 2.视频讲解 http://www.eyeandroid.com/thread-11391-1-1.html 3.翻译参考 存在一些情况,由于普通的程序行为,你的activity会被销毁,比如,当用户点击Back按钮,或者自己调用finish()方法。另外,如果

700

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Android Training - 01】详解Activity生命周期 [ Lesson 2 - 暂停与恢复Activity ]

Pausing and Resuming an Activity [暂停与恢复activity] 在使用通常的app时,前端的activity有时候会被其他可见的组件而阻塞(obstructed),这样会导致当前的activity进入Pause状态。例如,当打开一个半透明的activity时 (such as one in the style of a dialog) ,之前的act

迁移到http://hukai.me 2543

阅读Android官方教程 Google Training 1.3 ----- Manage the Activity Lifecycle

阅读谷歌官方教程第一章 Getting Started这次官方的内容竟然是中文的,但是内容涉及到了Activity的生命周期的管理,看完感觉内容很丰满,学到了很多东西啊。看完这节教程,觉得原来自己开发的时候几个周期方法简直是乱用,知道个大概就开始乱套,遇到问题上网百度到了,也就是应付一下,再来一个fragment简直就要爆炸了,这篇文章的篇幅很长,但我觉得都很有用啊。希望借这个机会好好认识一下生命周

冰糖的博客 711
上一篇: [Android Samples视频系列之ApiDemos] Views-Auto Complete-Screen Top和Screen Bottom和Scroll
下一篇: [Android Training视频系列]2.1 Starting an Activity
cofftech
博客等级 码龄16年 46粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值