Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
前情提要(Previously)
本系列将使用 Android Studio 将《第一行代码》(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android Studio 作为开发 IDE 的同学开路。
PS:其实我就是现学现卖,希望我能坚持刷完。
在 Day 1、Day 2,我们创建了第一个App project,并分析了项目结构、运行原理,实践了 LogCat 的使用。
系列目录在此:
摘要(Abstract)
Activity 是 一个 App 的脸面,而这又是一个看脸的世界,那就让我们从脸开始吧。这篇都是基础的罗列,没有什么值得注意的地方。
Activity 的基本用法
跟着书走,先创建一个 ActivityTest 的项目,注意在选择 Activity 的时候,选择 Add No Activity。如下图

创建活动
在 app/src/mani/java/com.xxx.ActivityTest 目录上点击右键 → New,这里有两种选择:
- 选择 Java Class,新建一个名为 FirstActivity 的类,并 extends Activity,重写 onCreate() 方法。代码可以参考之前的 HelloWorld。
- 选择 Activity,系统会生成一个 Activity,以及相关的布局文件 Layout,并在 AndroidManifest.xml 中注册。
如下图

创建和加载布局
新创建好的项目是没有 Layout 目录的,在 app/src/main/res 目录上点右键 → New → Android resource directory,在弹出的对话框中将 Resource type 选为 layout。
然后在 res/Layout 目录上点右键 → New → Layout resource file,在弹出的对话框中填上名字,Finish,这样就创建好了。
打开文件,可以向里面添加一个 Button 控件试试看。
注册
Activity 必须在 AndroidManifest.xml 文件中注册才可以使用,代码如下:
<activity
android:name=".FirstActivity"
android:label="FirstActivity" >
</activity>
如果想让其在 App 运行时打开,还需要添加 intent-filter,代码如下:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
隐藏标题栏
在 Activity 的 onCreate()方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE);
PS:在这里我遇到个坑,我创建的继承 Activity 的 活动默认就不显示标题栏,而且我也不知道怎么能让标题栏显示出来。
消息提示 Toast
Toast 是 Android 提供的一种非常好的提醒方式,在程序中可以使用她将一些短小的信息通知给用户,这些信息会在一段时间后自动消失。
例子是这样的,在 onCreate() 方法中,给 Button 绑定一个点击事件,再点击 Button 时显示一条信息,代码如下:
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "you clicked button 1", Toast.LENGTH_SHORT).show();
}
});
PS:我多么希望 HTML 中也有这样的元素啊。
Menu
我真心觉得 Menu 没什么好讲的。
Activity 跳转
创建一个名为 SecondActivity 的 Activity(好绕口)。
例子是这样的,在 FirstActivity 中点击 Button 后跳转到 SecondActivity。代码如下:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
});
传递数据
例子是这样的,在 FirstActivity 中点击 Button 后跳转到 SecondActivity,并将一个字符串传过去。
1.FirstActivity 中发送代码如下:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
String data = "hello second";
intent.putExtra("extra_data", data);
startActivity(intent);
2.SecondActivity中,在 onCreate() 方法中,接收代码如下:
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
返回数据
需要用 startActivityForResult() 来代替 startActivity() 方法。
例子是这样的,在 FirstActivity 中点击 Button 后跳转到 SecondActivity,然后点击返回键返回到 FirstActivity,并返回一个字符串。
1.FirstActivity 中发送代码如下:
startActivityForResult(intent, 1);
其中的第二个参数 requestCode,用于在之后的回调方法中判断数据的来源。要保证在当前 Activity 中的唯一性。
2.SecondActivity中,重写点击返回键时触发的 onBackPressed() 方法,代码如下:
@Override
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("data_return","hello first");
setResult(RESULT_OK, intent);
finish();
}
3.当从 SecondActivity 返回时,会回调上一个活动的 onActivityResult() 方法,所以需要重写 FirstActivity 的 onActivityResult() 方法来获取返回的数据,代码如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnedData);
}
break;
default:
}
}
其它(Miscellaneous)
尽管我试图在本文中尽量完整的进行描述,但受限于篇幅和我的个人水平,本文难免有所遗漏,欢迎在评论中指出。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
关于作者(About Me)
addict
原文链接:http://www.cnblogs.com/DebugLife/p/4349428.html
本文谢绝转载,如需转载需征得作者本人同意,谢谢。
Android Studio 单刷《第一行代码》系列 03 —— Activity 基础的更多相关文章
- android第一行代码-3.activity之间的调用跟数据传递
前面两节所有应用都是同一个activity中的,是时候讲activity之间交互的操作了,此后会涉及到intent这个概念,这也算一个新的里程碑开始. 主要内容包括intent的使用,以及activi ...
- android第一行代码-2.activity基本用法
摘要: 本节主要涉及到的有activity的创建,标题栏隐藏,button绑定方法(toast的使用),menu使用,活动销毁 1.activity的创建跟注册 创建: public class Te ...
- Android Studio 单刷《第一行代码》系列目录
前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...
- Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...
- Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
随机推荐
- 运用CMD命令关于快速获取文件夹名称和快速建立文件夹
前些天头儿让我建立一本本的文件夹,让后交给我了几个命令,快速获取文件夹的名称和快速建立文件夹,省去了一个个的按F2,一个个的复制,粘贴,一个个的新建,再复制粘贴. 首先讲一下第一个问题,快速获取文件夹 ...
- 日入过百优质消除手游数据分享—萌萌哒包子脸爱消除(游戏开发引擎:libgdx)
从2014年开始,消除游戏异常火爆,从消除小星星到腾讯的天天消除都赢得了海量用户.目前,各大市场上开心消消乐等游戏依旧火爆.消除游戏一直持续保持着女性和孩子的主流游戏地位.虽然市场上消除游戏种类很多, ...
- crackme_zapline分析
[破文标题]crackme_zapline 分析 [破文作者]CloAk [作者邮箱]@qq.com [作者主页] [破解工具]OD,... [破解平台]Windows --------------- ...
- Windows 安装 pip管理工具
Step 1: 设置Python环境变量(我的Python 是 2.7.3) SETX PATH "%path%;D:\python;D:\python\Scripts" 也可以在 ...
- C# 高精度加法 支持小数(待优化)
直接上代码 实现思路: 1.首先小数点补 位,9223372036854775808.9+9223372036854775808.9223372036854775808 => 922337203 ...
- JetBRAINS 系列注册机
转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/1118/ 说明 这个是一国外的大牛写的一个 JetBRAINS 系列注册机,他里面包含了很多,我就不打字了. ...
- JBoss部署项目log4j配置会造成死锁问题,浏览器访问一直pending状态
今天将项目部署到JBoss服务器上,部署成功后,浏览器访问页面一直在等待响应. 查了很长时间,最后在服务器上通过jstack pid命令查看Java堆栈信息,发现了有两个线程死锁. 看到造成死锁的原因 ...
- WinSCP列出’/’目录项出错
无法获得目录列表 如图所示,使用百度云虚拟机时,FTP连接服务器,出现错提示,官方给出的说法是使用其他的FTP进行连接,但是之前成功连接过,查找资料后说是打开过png,mp3等媒体文件,切换路径时出错 ...
- Mac OS 踩坑指南
前言 其实mac os本身还是很不错的,软硬结合使得其性能.效率.续航得到了很好的优化. 但是毕竟是一个"小众"操作系统,很多在Win上已经用习惯的东西在这里都没有,或者完全不一样 ...
- 第八章 Qt GUI之对话框使用
第八章 Qt GUI之对话框使用 对话框可以是模态(modal)的或非模态(modeless)两种.当我们在一个用户界面程序里面对一个对话框(比如选择文件对话框)的操作没有结束前,界面的其他窗口无法操 ...