From b043f324b7df67e1af30df5d26ea514fb12e53a8 Mon Sep 17 00:00:00 2001
From: Andy0613 <841676382@qq.com>
Date: Fri, 16 Oct 2026 11:24:05 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8A=E4=BC=A0=E7=AC=AC=E5=9B=9B?=
=?UTF-8?q?=E6=AC=A1=E5=AE=89=E5=8D=93=E8=AF=BE=E7=A8=8B=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?(2026=E5=B9=B410=E6=9C=8816=E6=97=A5)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/deploymentTargetSelector.xml | 11 ----
.idea/gradle.xml | 1 +
.idea/misc.xml | 2 +-
.../activitytest6117/FirstActivity.java | 25 +++++++-
.../activitytest6117/SecondActivity.java | 60 ++++++++++++++++++-
.../activitytest6117/ThirdActivity.java | 41 ++++++++++++-
app/src/main/res/layout/second_layout.xml | 7 +++
app/src/main/res/layout/third_layout.xml | 9 +++
8 files changed, 139 insertions(+), 17 deletions(-)
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index c2821a1..dadedbf 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -13,17 +13,6 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index cdbc250..02c4aa5 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
+
-
+
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
index c309812..063f715 100644
--- a/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
+++ b/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
@@ -11,6 +11,10 @@ import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
+import androidx.activity.result.ActivityResult;
+import androidx.activity.result.ActivityResultCallback;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -20,6 +24,9 @@ import androidx.appcompat.widget.PopupMenu;
public class FirstActivity extends AppCompatActivity {
private static final String TAG = "FirstActivity";
+ // step1: 定义contract启动器类对象,初始化放在Activity生命周期的初始阶段
+ ActivityResultLauncher mActivityResultLauncher;
+
// 先声明(变量命名:小驼峰)再使用
// 全局(成员)变量:m开头
Button mFirstBtn1;
@@ -41,11 +48,27 @@ public class FirstActivity extends AppCompatActivity {
setContentView(R.layout.first_layout);
Log.d(TAG, "onCreate: 活动创建成功"); // 组合键2:alter + enter
+ // step2: 初始化启动器类对象
+ mActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
+ new ActivityResultCallback() { // 触发要求:SecondActivity销毁
+ @Override
+ public void onActivityResult(ActivityResult o) {
+ if (o.getResultCode() == RESULT_OK && o.getData() != null) {
+ Intent intent = o.getData();
+ String msgBackFromSecond = intent.getStringExtra("second_backto_first");
+ Log.d(TAG, "收到Second反馈的数据:" + msgBackFromSecond);
+ }
+ }
+ });
+ // step3: 适当的时候启动启动器类
+
mFirstBtn4 = findViewById(R.id.first_btn4);
mFirstBtn4.setOnClickListener(v -> {
// Activity之间的跳转——显式Intent
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
- startActivity(intent);
+ intent.putExtra("first_to_second", "Hello, second! I'm first! Are you OK? 6117");
+ mActivityResultLauncher.launch(intent);
+// startActivity(intent);
});
mFirstBtn3 = findViewById(R.id.first_btn3);
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java
index 4995867..be48676 100644
--- a/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java
+++ b/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java
@@ -2,23 +2,81 @@ package com.yanzitong.activitytest6117;
import android.content.Intent;
import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class SecondActivity extends AppCompatActivity {
+
+ public static final String TAG = "SecondActivity";
+ TextView mSecondShowMsgTV;
+
+ ActivityResultLauncher mLauncher;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
+
+ mLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
+ o -> {
+ if (o.getResultCode() == RESULT_OK && o.getData() != null) {
+ Intent intent = o.getData();
+ String msgBackFromThird = intent.getStringExtra("third_backto_second");
+ Log.d(TAG, "Second收到Third反馈的数据:" + msgBackFromThird);
+ }
+ });
+
+ // 判断数据是否接受成功
+ Intent intent2 = getIntent();
+ String msgFromFirst = intent2.getStringExtra("first_to_second");
+ mSecondShowMsgTV = findViewById(R.id.second_show_msg_tv);
+ Button mSecondBtn2 = findViewById(R.id.second_btn2);
+ mSecondBtn2.setOnClickListener(v -> {
+ Intent intent3 = new Intent();
+ if (!TextUtils.isEmpty(msgFromFirst)) {
+ intent3.putExtra("second_backto_first", "Hi, first! 我收到你的消息了,谢谢,加油!");
+ } else {
+ intent3.putExtra("second_backto_first", "Hi, first! 我没有收到你的数据,有什么事啊?");
+ }
+ setResult(RESULT_OK, intent3);
+ finish();
+ });
+
+
+ if (TextUtils.isEmpty(msgFromFirst) == false) {
+ Log.d(TAG, "收到来自于First的数据" + msgFromFirst);
+ Toast.makeText(this, "收到来自于First的数据" + msgFromFirst, Toast.LENGTH_SHORT).show();
+ mSecondShowMsgTV.setText(msgFromFirst);
+ } else {
+
+ }
+
Button mSecondBtn1 = findViewById(R.id.second_btn1);
mSecondBtn1.setOnClickListener(v -> {
Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
- startActivity(intent);
+ intent.putExtra("second_to_third", "Nice to meet you, Third! 我是Second! 6117");
+
+ mLauncher.launch(intent);
+
+// startActivity(intent);
});
}
}
+
+/**
+ * your turn:
+ * SecondActivity传递数据给ThirdActivity, "Nice to meet you, Third! 我是Second! 6117"
+ * 日志、Toast、界面显示数据
+ */
+
/**
* your turn:
* 新建UI: third_layout和Java class: thirdActivity
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java
index bf80d88..cd40a90 100644
--- a/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java
+++ b/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java
@@ -1,8 +1,13 @@
package com.yanzitong.activitytest6117;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@@ -11,12 +16,26 @@ public class ThirdActivity extends AppCompatActivity {
private Button mThirdBtn1;
private Button mThirdBtn2;
private Button mThirdBtn3;
+ TextView mThirdShowMsgTV;
+ public static final String TAG = "ThirdActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third_layout);
+ mThirdShowMsgTV = findViewById(R.id.third_show_msg_tv);
+
+ Intent intent3 = getIntent();
+ String msgFromSecond = intent3.getStringExtra("second_to_third");
+ if (!TextUtils.isEmpty(msgFromSecond)) {
+ Log.d(TAG, "收到来自于Second的数据" + msgFromSecond);
+ Toast.makeText(this, "收到来自于Second的数据" + msgFromSecond, Toast.LENGTH_SHORT).show();
+ mThirdShowMsgTV.setText(msgFromSecond);
+ } else {
+
+ }
+
mThirdBtn1 = findViewById(R.id.third_btn1);
mThirdBtn1.setOnClickListener(v -> { // 项目内部隐式Intent:匹配action和category
Intent intent = new Intent("com.yanzitong.activitytest6117.action.YZT_FIRST"); // 为FirstActivity定义对应的action
@@ -27,12 +46,28 @@ public class ThirdActivity extends AppCompatActivity {
mThirdBtn2 = findViewById(R.id.third_btn2);
mThirdBtn3 = findViewById(R.id.third_btn3);
mThirdBtn2.setOnClickListener(v -> {
- Intent intent = new Intent(Intent.ACTION_VIEW); // 等价于"Intent intent = new Intent(android.intent.action.VIEW)"
+ // 方法二
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
+ // 方法一
+ /* Uri uri = Uri.parse("https://www.baidu.com");
+ * Intent intent = new Intent(Intent.ACTION_VIEW, uri); // 等价于"Intent intent = new Intent(android.intent.action.VIEW)"
+ * startActivity(intent);
+ */
});
mThirdBtn3.setOnClickListener(v -> {
- Intent intent = new Intent();
- startActivity(intent);
+ Intent intent4 = new Intent();
+ if (TextUtils.isEmpty(msgFromSecond) == false) {
+ intent4.putExtra("third_backto_second", "Hi, second! 我收到你的消息了,谢谢,加油!");
+ } else {
+ intent4.putExtra("third_backto_second", "Hi, second! 我没有收到消息!你想跟我说什么?");
+ }
+ setResult(RESULT_OK, intent4);
+ finish();
+// Intent intent = new Intent(Intent.ACTION_DIAL);
+// intent.setData(Uri.parse("tel:10000"));
+// startActivity(intent);
});
}
diff --git a/app/src/main/res/layout/second_layout.xml b/app/src/main/res/layout/second_layout.xml
index 2056071..b835808 100644
--- a/app/src/main/res/layout/second_layout.xml
+++ b/app/src/main/res/layout/second_layout.xml
@@ -19,4 +19,11 @@
android:layout_height="wrap_content"
android:text="跳转到ThirdActivity"
android:textAllCaps="false" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/third_layout.xml b/app/src/main/res/layout/third_layout.xml
index ce3f90c..9133058 100644
--- a/app/src/main/res/layout/third_layout.xml
+++ b/app/src/main/res/layout/third_layout.xml
@@ -27,4 +27,13 @@
android:layout_marginTop="50dp"
android:text="打开拨号界面"
android:textAllCaps="false" />
+
+
\ No newline at end of file