[Android系列—] 3. 启动另外的活动(Activity)
前言
[Android系列—] 2. Android 项目目录结构与用户界面的创建
在上一篇中,在一个活动中(activity)中显示了一个输入框和一个按钮。这一篇讲接着上一篇继续介绍如何在点击 Send 按钮时,通过添加一些代码到MainActivity中开始一个新的Activity.
添加Send 按钮的响应
添加按钮的点击事件响应,打开 fragment_main.xml
在Button 中添加 android:onClick
属性:
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_send"android:onClick="sendMessage" />
sendMessage 是activity 中的方法,当点击按钮时触发。
打开src 包目录中的 MainActivity.java , 添加以下方法:
/** Called when the user clicks the Send button */
public void sendMessage(View view) {// Do something in response to button
}
这个方法的要求是:
1, public
2, void return
3, 有一个View 的参数
接下来,逐步完善方法的内容。
构建一个意图(Intent)
Intent 是提供两个独立组件(比如两个activities)运行时绑定的对象。 Intent 代表了应用程序 ”意图做某事“。它可以做很多的事情,但是开始另外一个活动是最常见的用法。
在 sendMessage() 方法中, 创建一个Intent 呼叫 DisplayMessageActivity
Intent intent = new Intent(this, DisplayMessageActivity.class);
使用Intent 之前,需要先导入:
import android.content.Intent;
第一个参数是Context (Activity 是Context 的子类)
在方法体中,可以使用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);
Intent 可以使用putExra 方法以键值的方法传递数据。
EXTRA_MESSAGE 是定义的静态变量
public class MainActivity extends ActionBarActivity {public final static String EXTRA_MESSAGE = "com.oscar999.myfirstapp.MESSAGE";...
}
启动第二个活动
调用startActivity(),传入Intent 来启动一个activity.
到此为止, sendMessage 完整代码如下:
/** Called when the user clicks the Send button */
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 这个类还没有定义。
接下来就定义这个类
1 . 点击 New 的图标--》 android --> android Activity 点击下一步
2. 选择BlankActivity后 下一步
3. 输入相关信息,点完成
创建完成之后, 打开这个文件。
1. 继承了 onCreate() 方法, 这个方法是必须的。
2. onCreateOptionsMenu(),这个方法也是继承来的,不过不需要可以删除
3. onOptionsItemSelected(), 同样是继承的,处理动作条的向上行为。
4. PlaceholderFragment,扩展 Fragment 类的类。
Fragments 把应用程序功能分解成可重用的模组。
修改 onCreate 的方法, 修改后如下:
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Get the message from the intentIntent intent = getIntent();String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);// Create the text viewTextView textView = new TextView(this);textView.setTextSize(40);textView.setText(message);// Set the text view as the activity layoutsetContentView(textView);
}
setContentView 用来设置活动的布局。
除了.java 文件之外, 来看看其他文件还有什么改变的
1. String.xml
2. AndroidManifest.xml
3. layout 目录下多出了 activity_display_message.xml
看一下最终实现的效果
[Android系列—] 3. 启动另外的活动(Activity)相关推荐
- android如何在底部显示四个按钮,[Android系列—] 四. 添加操作栏(Action Bar)
[Android系列-] 4. 添加操作栏(Action Bar) 前言 操作栏是最重要的设计元素之一,使用它来实现你的应用程序活动.通过提供多种用户界面功能, 使应用程序快速和其他的Andorid应 ...
- Android手机app启动的时候第一个Activity必须是MainActivity吗
Android手机APP启动的第一个Activity是可以自己设置的,不是必须的MainActivity,可以是任何的Activity. 设置Android手机APP启动的第一个Activity得看A ...
- Android性能优化系列:启动优化
文章目录 1 应用启动类型 1.1 冷启动 1.2 温启动 1.3 热启动 2 查看启动耗时 2.1 adb命令查看 2.2 Logcat Displayed查看启动耗时 2.3 手动记录启动耗时 2 ...
- 【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )
文章目录 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 调用 star ...
- Android中活动Activity方面的知识点
1.创建activity 2.配置AndroidManifest.xml文件 <application.. <activity android:name=".NewActivit ...
- Android 面试必备 - 系统、App、Activity 启动过程
前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果 ...
- Android系列之Activity的传值和回传值
Android系列之Activity的传值和回传值 Android 组件系列之Activity的传值和回传值 在这篇随笔里将讲解Activity的传值和回传值. 一.通过startActivity来进 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第四章:活动Activity
第 4 章 活动Activity 本章介绍Android 4大组件之一Activity的基本概念和常见用法.主要包括如何正确地启动和停止活动页 面.如何在两个活动之间传递各类消息.如何在意图之外给活动 ...
- 从0到1学android:四大组件—活动Activity
点击上方"罗晓胜",马上关注,您的支持对我帮助很大 上期文章 从0到1学android:认识Android 逻辑题--特尔斐城的少女 / 前言 / 活动(Activity) ...
最新文章
- 刚从阿里、头条面试回来,尚硅谷java数据结构与算法百度云
- TCP/IP总结(4)TCP 之3次握手
- Round-Robin负载均衡算法及其实现原理
- SQL:REGEXP
- Java中九大内置对象
- 201403-5 任务调度
- Leetcode:search_insert_position
- oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell
- 信息学奥赛一本通 1924:【03NOIP普及组】栈 | 洛谷 P1044 [NOIP2003 普及组] 栈
- 分布式事务模型--基于消息的分布式事务
- 通过读取配置文件,启动mongodb
- BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
- Delphi BLE 控件
- java基础知识整理(精简)
- 自学鄙视链顶端的王者
- Linux中级之ansible概念及hoc命令行调用模式
- SSD1306驱动理解
- 计算机主机的三大部分,计算机系统的三大组成部分
- Spring AOP配置 之 @Aspect
- Intel处理器将被苹果M1处理器降维式打击
热门文章
- 【ADO.NET基础】加密方法公共类
- [翻译] GiFHUD
- android Intent的介绍
- Hyper-V虚拟机Redhat添加网卡找不到网卡配置文件解决方法
- ios cannot use “@throw“ with objective-c exceptions disabled 问题解决方案
- sql 2000 无法连接远程数据库 sqlserver不存在或访问被拒绝、不能打开到主机的连接,在端口1433:连接失败等 解决方案
- WPF引用外部类库中的资源文件提示不能找到的解决方法
- leetcode力扣36.有效的数独
- 初学opengl的一些知识整理-1
- 如何将知识图谱引入推荐系统?