您的位置:首页 > 移动开发 > Android开发

Android四大组件之一:Activity总结(下)

2016-11-14 00:49 716 查看

六.多Activity的跳转及值传递

一般启动Activity: startActivity(intent)

一般结束Activity: finish()

使用Intent进行数据传递

a. intent携带数据 :intent.putExtra(name, value)

b. 从intent中取数据:intent.getXxExtra(name)

带回调的启动:

a. startActivityForResult(reqCode, intent);

b. 重写onActivityResult(int reqCode, int resultCode, Intent data)

带结果的结束:

setResult(resultCode,intent);

补充:Intent能携带的数据类型?

a. 基本类型及其数组

b. 字符串及其数组

c. 可序列化类型

d. 可打包类型(在Service部分会接触到)

下面:通过一个小例子来深入了解多anctivity的跳转及值传递





第一个activity:

package com.atguigu.l02_activity;

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.EditText;

public class MainActivity extends Activity implements OnClickListener {

//视图对象的声明
private EditText et_main_content;
private Button btn_main_start1;
private Button btn_main_start2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//视图对象的初始化
et_main_content = (EditText) findViewById(R.id.et_main_content);
btn_main_start1 = (Button) findViewById(R.id.btn_main_start1);
btn_main_start2 = (Button) findViewById(R.id.btn_main_start2);

//方式二:给两个Button设置点击事件的监听
btn_main_start1.setOnClickListener(this);
btn_main_start2.setOnClickListener(this);

}

@Override
public void onClick(View v) {//v:即为触发此点击事件的对象,即为两个button
//创建一个Intent
Intent intent = new Intent(this, SecondActivity.class);
//获取EditText中的内容
String content = et_main_content.getText().toString();
//携带数据
intent.putExtra("content", content);

if(v == btn_main_start1){
//一般启动
//启动一个新的Activity
startActivity(intent);

}else if(v == btn_main_start2){
//带回调的启动
int requestCode = 1;
//启动一个新的Activity
startActivityForResult(intent, requestCode);
}
}

//当从SecondActivity返回时的回调方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1 && resultCode == RESULT_OK){
String result = data.getStringExtra("result");
et_main_content.setText(result);
}
}
}


SecondActivity:

package com.atguigu.l02_activity;

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.EditText;

public class MainActivity extends Activity implements OnClickListener {

//视图对象的声明
private EditText et_main_content;
private Button btn_main_start1;
private Button btn_main_start2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//视图对象的初始化
et_main_content = (EditText) findViewById(R.id.et_main_content);
btn_main_start1 = (Button) findViewById(R.id.btn_main_start1);
btn_main_start2 = (Button) findViewById(R.id.btn_main_start2);

//方式二:给两个Button设置点击事件的监听
btn_main_start1.setOnClickListener(this);
btn_main_start2.setOnClickListener(this);

}

@Override
public void onClick(View v) {//v:即为触发此点击事件的对象,即为两个button
//创建一个Intent
Intent intent = new Intent(this, SecondActivity.class);
//获取EditText中的内容
String content = et_main_content.getText().toString();
//携带数据
intent.putExtra("content", content);

if(v == btn_main_start1){
//一般启动
//启动一个新的Activity
startActivity(intent);

}else if(v == btn_main_start2){
//带回调的启动
int requestCode = 1;
//启动一个新的Activity
startActivityForResult(intent, requestCode);
}
}

//当从SecondActivity返回时的回调方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1 && resultCode == RESULT_OK){
String result = data.getStringExtra("result");
et_main_content.setText(result);
}
}
}


完整源码已上传到我的资源里:~

Activity的好兄弟:Intent和IntentFilter

讲到Activity,又不得不提Intent了~

Intent

1. 定义

Three of the core components of an application activities, services, and broadcast receivers are activated through messages, called intents.The intent itself, an Intent object, is a passive data structure holding an abstract description of an operation to be performed.

组件之间进行交互的信使

2. 结构

componentName、action、extras、data、category、flags

3.分类

显式意图:只能访问本应用中指定的组件

Intent(Context context,Class clazz)


隐式意图:可以跨应用访问其他应用的组件

Intent(String action)


3.作用:

①指明要访问的新的组件

②可以携带数据:

写入:

putExtra(String key,Xxx xxx)

setData(Uri uri)

读取:

Xxx getXxxExtra(String key)

getData();

4.理解:intent类似于web中的httpRequest

IntentFilter

1.定义

To inform the system which implicit intents they can handle, activities, services, and broadcast receivers can have one or more intent filters.

用来与隐式意图匹配的一个匹配规则对象

2.理解

IntentFilter类似于web中的为Servlet配置的uri-patten

注意!!!

Intent:翻译为意图,

是Activity\Service\BroadcastRecevier三者之间进行通信的信使。

不是!四大组件之一
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息