什么是 Intent
Intent 可以理解为信使 (意图)
由 Intent 来协作完成 Android 各个组件之间的通讯, 也可以说是实现页面与页面之间的跳转
Intent 实现页面之间的跳转
- startActivity(intent) // 第一种方式启动
- startActivityForResult(intent, requestCode); // 第二种启动方式
- onActivityResult(int requestCode, int resultCode, Intent data)
- setResult(resultCode, data);
第一种启动方式实现直接跳转, 无返回值
第二种启动方式 A 页面 ->B 页面, B 页面也能回传到 A 页面数据
onActivityResult(int requestCode, int resultCode, Intent data)
这个是 用来 A 页面接收 B 页面回传的数据用的
setResult(resultCode, data) 这个是用来 B 页面回传给 A 页面数据
首先创建一个项目
新建两个 Activity
然后再 layout 里面新建两个页面布局 layout 右键 ànewàAndroid xml File
随后, 进行绑定, 例如:
然后, 配置清单文件 AndroidManifest.xml
然后, 在 activity_first 插入两个 button 一个 textview 分别用来第一个和第二个跳转方式, 以及数据回传, 代码如下:
- <?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">
- <Button
- Android:id="@+id/bt_first"
- Android:layout_width="match_parent"
- Android:layout_height="wrap_content"
- Android:text="第一种启动方式" />
- <Button
- Android:id="@+id/bt_Second"
- Android:layout_width="match_parent"
- Android:layout_height="wrap_content"
- Android:text="第二种启动方式" />
- <TextView
- Android:id="@+id/textview"
- Android:layout_width="match_parent"
- Android:layout_height="wrap_content"
- Android:text="把第二个页面回传的数据显示" />
- </LinearLayout>
刚才提到了, 实现跳转需要用到 Intent 意图, 代码很简单 清晰明了 我直接贴代码了
首先 FirstActivity
- package com.example.intentdemo;
- 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 FirstActivity extends Activity {
- Button bt_first, bt_second;
- TextView textView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_first);
- initView();
- }
- private void initView() {
- // 关联控件
- bt_first = (Button) findViewById(R.id.bt_first);
- bt_second = (Button) findViewById(R.id.bt_Second);
- textView = (TextView) findViewById(R.id.textview);
- bt_first.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- // 第一种跳转, 无数据返回跳转
- Intent intent = new Intent(FirstActivity.this,
- SecondActivity.class);
- intent.putExtra("content", "第一种跳转方式");
- startActivity(intent);
- }
- });
- bt_second.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- // 第二种方式, 有数据返回跳转
- Intent intent = new Intent(FirstActivity.this,
- SecondActivity.class);
- intent.putExtra("content", "第二种跳转方式");
- /*
- * 第一个参数是 intent 对象 第二个参数的请求的一个标识
- */
- startActivityForResult(intent, 1);
- }
- });
- }
- /*
- * 通过 startActivityForresult 跳转, 接收返回数据的方法 requestCode: 请求的标识
- * resultCode: 第二个页面返回的标识 data: 第二个页面回传的数据
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == 1) {
- if (resultCode == 1) {
- String text = data.getStringExtra("content");
- textView.setText(text);
- }
- }
- }
- }
SecondActivity 代码如下:
- package com.example.intentdemo;
- 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 SecondActivity extends Activity {
- TextView textView;
- Button button;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_second);
- // 获取第一个页面的意图
- Intent intent = getIntent();
- button = (Button) findViewById(R.id.button);
- textView = (TextView) findViewById(R.id.textview);
- // 接收第一个页面传送的数据
- textView.setText(intent.getStringExtra("content"));
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- setResult(1, new Intent().putExtra("content", "从第二个页面返回"));
- // 结束当前页面
- finish();
- }
- });
- }
- }
这样就简单的实现了,
如果有不懂的可以在下面发, 我看到会帮你解决, Android 其他问题也可以
下面贴上 Demo:https://pan.baidu.com/s/16HEQ1pVnpB995i3-lAG7qw https://pan.baidu.com/s/16HEQ1pVnpB995i3-lAG7qw
来源: https://www.cnblogs.com/MrChen-/p/10356866.html