Android组件(Activity)
来源:互联网 发布:360数据恢复大师免费版 编辑:程序博客网 时间:2024/05/08 13:39
1.前言:
前面我画过一张android学习路线图,我准备接下来按着我的路线图进行android的进阶学习,同时会把我的学习总结分享出来,希望对大家有帮助我个人认为,学一门技术最主要的是要有全局感,明白自己要做什么?做这些需要学习什么?学这些需要怎么学?,也就是所谓的结果导向,这样
我们才能快速高效的成长。
第二点,分享给各位初学者,成长是个过程,是量变到质变的过程,所以不必过于着急,你终会成为自己心中的自己。
好了接下来我们先学习组件Activity
2.目录:
1.Activity概述(是啥?)2.Activity的作用(我们用他干嘛?)
3.Activity生命周期
4.2个Activity切换的生命周期(例子)
6.Activity1启动Activity2(例子)
3. Activity概述:
Activity是Android四大组件之一,提供给用户一个可交互的界面,承载各种View,一个APP(Aplication)有多个Activity组成
在用户操作中这些Activity由back stack(遵循后进先出规则的栈)(暂不提)统一管理。4. Activity的作用:
这个问题不解说,不就是给用户一个所见即所得的界面,让用户体验更爽吗?(试想没有界面的APP是啥体验)
5.Activity生命周期(图太多,可自己百度 or google)
(图片来源:点击打开链接)
可能上面还是看不明白Activity的生命周期到底是怎么样,接下来我会在例子中体现。
6.2个Activity切换的生命周期
1)eclipse建立android工程
2)新建Activity1.java 和Activity2.java类并继承Activity类
2.1 Acitvity1.java
package com.Andy.activitydemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class Activity1 extends Activity {//Button butt1 = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main1);System.out.println("Activity1->onCreate");// 绑定butt1Button butt1 = (Button) findViewById(R.id.but1);// 设置点击监听butt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 启动第二个activityIntent intent=new Intent();intent.setClass(Activity1.this, Activity2.class);//Intent intent = new Intent(Activity1.this, Activity2.class);intent.putExtra("data", "hello my name is Activity1");Activity1.this.startActivity(intent);}});// 获取activity1传递的IntentIntent intent1 = getIntent();// 获取Intent中的数据String data = intent1.getStringExtra("data");// 显示数据Toast.makeText(this, data, Toast.LENGTH_LONG).show();}@Overrideprotected void onStart() {super.onStart();System.out.println("Activity1->onStart");}@Overrideprotected void onResume() {System.out.println("Activity1->onResume");super.onResume();}@Overrideprotected void onPause() {System.out.println("Activity1->onPause");super.onPause();}@Overrideprotected void onRestart() {System.out.println("Activity1->onRestart");super.onRestart();}@Overrideprotected void onStop() {System.out.println("Activity1->onStop");super.onStop();}@Overrideprotected void onDestroy() {System.out.println("Activity1->onDestroy");super.onDestroy();}}
2.2 Acitvity2.java
package com.Andy.activitydemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class Activity2 extends Activity {TextView textView = null;Button butt2 = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);// 绑定textviewtextView = (TextView) findViewById(R.id.text);// 绑定buttonbutt2 = (Button) findViewById(R.id.butt2);// 设置监听返回butt2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 返回第一个activityIntent intent = new Intent(Activity2.this, Activity1.class);intent.putExtra("data", "hello my name is Activity2");startActivity(intent);}});// 获取activity1传递的IntentIntent intent1 = getIntent();// 获取Intent中的数据String data = intent1.getStringExtra("data");// 显示数据textView.setText(data);System.out.println("Activity2->onCreate");}@Overrideprotected void onStart() {super.onStart();System.out.println("Activity2->onStart");}@Overrideprotected void onResume() {System.out.println("Activity2->onResume");super.onResume();}@Overrideprotected void onPause() {System.out.println("Activity2->onPause");super.onPause();}@Overrideprotected void onRestart() {System.out.println("Activity2->onRestart");super.onRestart();}@Overrideprotected void onStop() {System.out.println("Activity2->onStop");super.onStop();}@Overrideprotected void onDestroy() {System.out.println("Activity2->onDestroy");super.onDestroy();}}
3)layout下分别建立布局activity_main1.xml和activity_main2.xml
3.1 activity_main1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.Andy.activitydemo.Activity1" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/but1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="跳转" /></LinearLayout>
3.2 activity_main2.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world1" /> <Button android:id="@+id/butt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回" /></LinearLayout>
4 ) 配置Manifest.xml(Manifest.xml配置后面讲解)
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Andy.activitydemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".Activity1" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activity2"> </activity> </application></manifest>
5)运行LogCat打印
7.Activity使用
上面demo包含使用方式,在此仅仅描述创建步骤
1)创建工程
2) 建java类继承Activity
public class Activity2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}}3)建立activity_main.xml布局
4)manifest.xml中注册activity类
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".Activity1" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activity2"> </activity> </application>>
8.Activity1启动Activity2(例子)
8.1 startActivity(intent)启动另一个Activity传递数据传递数据:
String data = "I am FirstActivity data"; Intent intent = new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("data",data); startActivity(intent);
接收数据:
Intent intent = getIntent(); String data = intent.getStringExtra("data"); Toast.makeText(SecondActivity.this, data, Toast.LENGTH_LONG).show();
8.2 startActivityForResult(intent)启动另一个Activity传递数据
FirstActivity传递数据(同上):
String data = "I am FirstActivity data"; Intent intent = new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("data",data); startActivityForResult(intent,1);
SecondActivity接收数据并回传:
Intent intent = new Intent(); intent.putExtra("return_data","I am SecondActivity data"); //setResult(arg0,arg1) arg0:返回处理结果 arg1:含数据的intent setResult(RESULT_OK,intent); finish();
SecondActivity销毁回调onActivityResult()方法实现回传数据:
//onActivityResult(int requestCode, int resultCode, Intent data) ,该方法在FirstActivity中实现 //requestCode:请求码,启动SecondActivity是intent传入的 //resultCode:结果码,setResult()中的结果码 //intent:返回结果数据,setResult()中返回 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: if (resultCode == RESULT_OK) { String returnData = data.getStringExtra("return_data"); Toast.makeText(this, returnData, Toast.LENGTH_LONG).show(); } break; default: break; } }
相关参考:http://www.androiddev.net/android%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B8%80-intent%E7%94%A8%E6%B3%95%E6%80%BB%E7%BB%93/
欢迎转载,转载请注明出处,谢谢!
- Android组件(Activity)
- Android页面交互Activity组件(上)
- Android 组件 — Activity (生命周期管理)
- android四大组件之活动(Activity)
- Android--四大组件(1)Activity
- 关于Android中的四大组件(Activity)
- 【Android】四大组件(1)Activity详解
- Android常用组件(Activity学习之一)
- 学Android---四大组件(一)Activity
- android入门---Activity组件.活动(一)
- Android 四大组件详解(一) Activity
- Android学习-四大组件(Activity)
- Android四大组件之 Activity(上)
- Android四大组件之Activity(中)
- Android四大组件之 Activity(下)
- Android四大组件之Activity(一)
- Android四大组件之Activity(二)
- Android四大组件之Activity(四)
- Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
- CALayer的用法
- plsql连接错误提示ora-12514
- VS2010 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 嵌入清单
- UVa136 Ugly Numbers (priority_queue)
- Android组件(Activity)
- Xcode中经常出现的编译错误 linker command failed with exit code...
- 移动APP切图术语解读:什么是@1x @2x和@3x【转自25学堂】
- 【bzoj1001】[BeiJing2006]狼抓兔子
- SQL的 case when语句嵌套使用
- windows server 2008 ado 分页补丁
- 图片不能上传js不管用
- Core Animation - CATransformLayer的运用
- 【一天一道LeetCode】#52. N-Queens II