Intent, 直译为意图, 也就是你想要做什么或想要去哪?
Intent是Activity, Service和BroadcastReceiver这三个应用组件之间进行通信的信使,
例如: 我要在Activity中启动另一个Actvity, 就必须使用Intent对象
意图对象还可以携带数据
注意: Intent不是Android中的四大应用组件之一
显示意图 : 明确指定的目标组件的意图
创建对象 : Intent(Context context, Class clazz)
何时使用 : 当操作当前自己应用的组件时使用
隐式意图 : 没有明确指定目标组件的意图
创建对象 : Intent(String action)
何时使用 : 当操作其它应用的组件时使用
•在配置Activity时, 可以为Activity指定一个IntentFilter的配置
•如果你的Activity希望其它应用能访问到, 需要配置
•如果你想启动其它应用的界面你必须用隐式intent, 且目标界面Activty配置了
•它的作用类似于web中的为Servlet配置的
Intent: 意图
Intent(Context packageContext, Class> cls) : 用于创建显示意图对象
Intent(String action): 用于创建隐式意图对象
putExtra(String name, Xxx value): 保存额外数据
Xxx getXxxExtra(String name): 获取额外数据
setData(Uri data): 设置有特定格式的uri数据
Activity: 活动
startActivity(Intent intent): 一般启动Activity
startActivityForResult(int reqCode, Intent intent): 带回调启动Activity
onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
setResult(int resultCode, Intent data): 设置要返回的结果
finish(): 结束当前Activity
getIntent(): 得到启动Activity的意图
MainActivity.java
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;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private EditText et_main_message;
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_message = (EditText) findViewById(R.id.et_main_message);
btn_main_start1 = (Button) findViewById(R.id.btn_main_start1);
btn_main_start2 = (Button) findViewById(R.id.btn_main_start2);
//设置点击监听
btn_main_start1.setOnClickListener(this);
btn_main_start2.setOnClickListener(this);
}
@Override
public void onClick(View v) {//v就是发生事件的视图对象(操作的)
if(v==btn_main_start1) {
//Toast.makeText(this, "一般启动", 0).show();
//1). 创建Intent对象(显式)
Intent intent = new Intent(this, SecondActivity.class);
//2). 通过intent携带额外数据
String message = et_main_message.getText().toString();
intent.putExtra("MESSAGE", message);
//3). 启动Activity
startActivity(intent);
} else if(v==btn_main_start2) {
//Toast.makeText(this, "带回调启动", 0).show();
//1). 创建Intent对象(显式)
Intent intent = new Intent(this, SecondActivity.class);
//2). 通过intent携带额外数据
String message = et_main_message.getText().toString();
intent.putExtra("MESSAGE", message);
//3). 带回调启动Activity
int requestCode = 2;
startActivityForResult(intent, requestCode);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//判断code
if(requestCode==2 && resultCode==3) {
//从data中取出数据
String result = data.getStringExtra("RESULT");
//显示
et_main_message.setText(result);
}
}
}
SecondActivity.java
package com.atguigu.l02_activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
/**
* 界面二
*
* @author Administrator
*
*/
public class SecondActivity extends Activity {
private EditText et_second_message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
et_second_message = (EditText) findViewById(R.id.et_second_message);
//4). 得到intent对象
Intent intent = getIntent();
//5). 通过intent读取额外数据
String message = intent.getStringExtra("MESSAGE");
//6). 显示到EditText
et_second_message.setText(message);
}
public void back1(View v) {
//关闭当前界面
finish();
}
public void back2(View v) {
//保存一个结果
int resultCode = 3;
//准备一个带额外数据的intent对象
Intent data = new Intent();
String result = et_second_message.getText().toString();
data.putExtra("RESULT", result);
//设置结果
setResult(resultCode, data );
//关闭当前界面
finish();
}
}
带回调启动
带结果返回
注:此文章来自尚硅谷http://www.atguigu.com/课程学习资料总结