1. MainActivity:

 1 package com.example.infotransmission;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.content.Intent;
 6 import android.graphics.Bitmap;
 7 import android.os.Bundle;
 8 import android.view.View;
 9 
10 /**
11  * 第一个,实现基本的数据类型的传输.
12  * 第二个,实现对象的页面传输
13  */
14 public class MainActivity extends AppCompatActivity {
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20     }
21 
22     /**
23      * 该方法用于跳转到第二个界面
24      * @param view
25      */
26     public void SkipToSecondActivity(View view){
27 
28         // 创建意图对象
29         Intent intent = new Intent(this, SecondaryActivity.class);
30         // 通过调用putExtra来实现数据传递,然后存储类型是键值对
31         intent.putExtra("intKey", 1000);
32         intent.putExtra("booleanKey", true);
33         startActivity(intent);
34     }
35 
36     /**
37      * 这个方法把第一个界面的对象传递到第二个界面
38      * 步骤:
39      * 1. 先实现界面的跳转(创建intent意图)
40      * 2. 实例化一个对象,该对象要调用序列化接口
41      * 3. 调用putExtra方法传入对象
42      * 4. 在第二个界面通过getParcelableExtra方法与key获取到传递的对象
43      * @param view
44      */
45     public void DeliverObjToSecondActivity(View view){
46 
47         Intent intent = new Intent(this, SecondaryActivity.class);
48         // 这里创建一个名为user的对象,并将其传递
49         // 意图传输对象的时候,需要序列化后的对象,所以要传输的对象需要实现序列化接口
50         User user = new User();
51         user.setAge(22);
52         user.setName("Tom");
53         user.setHeight(168.9f);
54         intent.putExtra("userKey", user);
55         // 同样的,也可以传输照片(通过BItMap)
56         Bitmap bitmap = null;
57         intent.putExtra("bitMap", bitmap);
58         startActivity(intent);
59     }
60 }

 

2. SecondActivity:

 1 package com.example.infotransmission;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 
 8 import androidx.annotation.Nullable;
 9 
10 public class SecondaryActivity extends Activity {
11     private static final String TAG = "SecondaryActivity";
12 
13     @Override
14     protected void onCreate(@Nullable Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_second);
17         // 取得跳转到这个Activity的意图
18         Intent intent = getIntent();
19         // 取值之前首先需要进行判空
20         if (intent != null) {
21             // 调用get'Type'Extra函数
22             // 第二个参数的定义: the value to be returned /if no value of the desire type is stored /with the given name.
23             // 即对于给定的键,如果没有存储想要的类型的值,那么就会返回defaultValue
24             // 对于数组来说,其本身是一个对象,如果数组的长度为空,那就会返回null,所以没有defaultValue
25             int intValue = intent.getIntExtra("intKey", 1);
26             Log.d(TAG, "int value == " + intValue);
27             boolean booleanValue = intent.getBooleanExtra("booleanKey", false);
28             Log.d(TAG, "boolean value == " + booleanValue);
29         }
30 
31         User user = intent.getParcelableExtra("userKey");
32         if (user != null) {
33             Log.d(TAG, "userName == " + user.getName());
34             Log.d(TAG, "userAge == " + user.getAge());
35             Log.d(TAG, "userHeight == " + user.getHeight());
36         }
37     }
38 
39 }

 

3. activity_main:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent"
 8     android:orientation="vertical"
 9     tools:context=".MainActivity">
10 
11     <Button
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:text="跳转到第二个界面"
15         android:onClick="SkipToSecondActivity"/>
16 
17     <Button
18         android:layout_width="match_parent"
19         android:layout_height="wrap_content"
20         android:text="对象传递到另外一个界面"
21         android:onClick="DeliverObjToSecondActivity"/>
22 
23 
24 
25 </LinearLayout>

界面效果如下:

 

选择第一个,logcat输出:

  com.example.infotransmission D/SecondaryActivity: int value == 1000

  com.example.infotransmission D/SecondaryActivity: boolean value == true

选择第二个,logcat输出:

  com.example.infotransmission D/SecondaryActivity: int value == 1
  com.example.infotransmission D/SecondaryActivity: boolean value == false
  com.example.infotransmission D/SecondaryActivity: userName == Tom
  com.example.infotransmission D/SecondaryActivity: userAge == 22
  com.example.infotransmission D/SecondaryActivity: userHeight == 168.9

 (千万不能忘记在Manifest中注册!)

 

posted on 2021-09-23 10:43  EndlessShw  阅读(28)  评论(0编辑  收藏  举报