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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
System.out.println("Activity1->onCreate");
// 绑定butt1
Button butt1 = (Button) findViewById(R.id.but1);
// 设置点击监听
butt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 启动第二个activity
Intent 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传递的Intent
Intent intent1 = getIntent();
// 获取Intent中的数据
String data = intent1.getStringExtra("data");
// 显示数据
Toast.makeText(this, data, Toast.LENGTH_LONG).show();
}
@Override
protected void onStart() {
super.onStart();
System.out.println("Activity1->onStart");
}
@Override
protected void onResume() {
System.out.println("Activity1->onResume");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("Activity1->onPause");
super.onPause();
}
@Override
protected void onRestart() {
System.out.println("Activity1->onRestart");
super.onRestart();
}
@Override
protected void onStop() {
System.out.println("Activity1->onStop");
super.onStop();
}
@Override
protected 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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// 绑定textview
textView = (TextView) findViewById(R.id.text);
// 绑定button
butt2 = (Button) findViewById(R.id.butt2);
// 设置监听返回
butt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 返回第一个activity
Intent intent = new Intent(Activity2.this, Activity1.class);
intent.putExtra("data", "hello my name is Activity2");
startActivity(intent);
}
});
// 获取activity1传递的Intent
Intent intent1 = getIntent();
// 获取Intent中的数据
String data = intent1.getStringExtra("data");
// 显示数据
textView.setText(data);
System.out.println("Activity2->onCreate");
}
@Override
protected void onStart() {
super.onStart();
System.out.println("Activity2->onStart");
}
@Override
protected void onResume() {
System.out.println("Activity2->onResume");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("Activity2->onPause");
super.onPause();
}
@Override
protected void onRestart() {
System.out.println("Activity2->onRestart");
super.onRestart();
}
@Override
protected void onStop() {
System.out.println("Activity2->onStop");
super.onStop();
}
@Override
protected 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 {
@Override
protected 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;
}
}
欢迎转载,转载请注明出处,谢谢!