目录
1.Activity的生命周期
核心生命周期回调
1)onCreate()
2)onStart()
3)onResume()
4)onPause()
5)onStop()
6)onRestart()
7)onDestroy()
8)生命周期图示
10)注意事项
2.如何创建一个Activity
3.清单文件配置Activity (AndroidManifest.xml)
1)第一种配置
2)第二种配置
4.如何启动和关闭
1)启动
2)关闭
3.Intent与IntentFilter
1)Intent
1-主要用途
2-创建 Intent
3-添加额外数据
4-接收额外数据
2)IntentFilter
1-声明方式
2-组成部分
1--Action
2--Category
3--Data
3-匹配规则
1--Action
2--Category
3--Data
4.Activity之间的传递
1)数据传递
1-通过putExtra()方法传递
1--数据的传递
2--数据的接受
2-通过通过Bundle类传递数据
1--数据发送
2--数据接受
2)数据回传
1. startActivityForResult()方法 (activity销毁时,返回数据)
2.setResult()方法
3.onActivityResult()
案例:模拟登录修改
1.代码
1--xml代码
1---activity_main.xml代码
2---activity_login_main.xml代码
3---activity_alter_info.xml代码
4.AndroidManifest.xml
2--java代码
1---MainActivity
2---LoginInfo
3---AlterInfo
2.效果
1.Activity的生命周期
核心生命周期回调
1)onCreate()
- 当
Activity
被创建时调用。 - 这是初始化组件的最佳时机,比如设置布局、绑定数据等。
- 示例代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化其他组件... }
2)onStart()
- 当
Activity
变得可见但尚未获取焦点时调用。 - 在这个阶段,用户可以看到
Activity
,但是还不能与之交互。
3)onResume()
- 当
Activity
开始与用户交互并获得焦点时调用。 - 此时
Activity
处于活动状态,并可以响应用户的输入。
示例代码:
@Override
protected void onResume() {
super.onResume();
// 恢复暂停的操作,如开始传感器监听...
}
4)onPause()
- 当
Activity
部分被遮挡或完全不可见时调用。 - 系统可能会在
Activity
不再处于前台时调用此方法,例如当新的Activity
启动或者对话框出现时。 - 在这里应该释放一些资源以提高系统性能。
- 示例代码:
@Override
protected void onPause() {
super.onPause();
// 停止占用CPU的动画或其他操作...
}
5)onStop()
- 当
Activity
对用户完全不可见时调用。 - 在这个阶段,
Activity
已经不再显示给用户,但仍驻留在内存中。 - 示例代码:
@Override
protected void onStop() {
super.onStop();
// 更多清理工作...
}
6)onRestart()
- 当
Activity
从停止状态重新启动时调用。 - 它总是在
onStart()
方法之前调用。 - 示例代码:
@Override
protected void onRestart() {
super.onRestart();
// 重启时的处理逻辑...
}
7)onDestroy()
- 当
Activity
即将被销毁时调用。 - 在这里进行最后的清理工作,比如取消网络请求、关闭数据库连接等。
- 示例代码:
@Override
protected void onDestroy() {
super.onDestroy();
// 清理所有剩余资源...
}
8)生命周期图示
+---------------------+
| onCreate() |
+---------------------+
|
v
+---------------------+
| onStart() |
+---------------------+
|
v
+---------------------+
| onResume() |
+---------------------+
|
v
+---------------------+ +---------------------+
| | | 用户交互... |
| Activity活跃 |<->| |
| | | |
+---------------------+ +---------------------+
|
v
+---------------------+
| onPause() |
+---------------------+
|
v
+---------------------+
| onStop() |
+---------------------+
|
v
+---------------------+
| onDestroy() |
+---------------------+
10)注意事项
onSaveInstanceState(Bundle outState)
和onRestoreInstanceState(Bundle savedInstanceState)
是用于保存和恢复Activity
状态的方法,它们通常在配置更改(如屏幕旋转)或低内存情况下的进程被杀死后重新创建Activity
时使用。- 如果你在
AndroidManifest.xml
中为Activity
设置了android:configChanges
属性,那么系统会在配置改变时不会自动销毁并重建Activity
,而是会调用onConfigurationChanged(Configuration newConfig)
方法。 - 在处理
Activity
生命周期时,要确保你的应用能够优雅地处理各种可能的情况,包括突然的中断和意外的退出。
2.如何创建一个Activity
在res的目录 === > 鼠标右击 ===》 new ===> Activity ===>Empty Views Activity
手动创建一个AlterInfo
3.清单文件配置Activity (AndroidManifest.xml)
1)第一种配置
<!--配置LoginInfo-->
<activity
android:name=".LoginInfo"
android:exported="false" />
2)第二种配置
注:类名大写+
<!--配置隐式意图-->
<activity
android:name=".AlterInfo"
android:exported="true">
<intent-filter>
<action android:name="com.xiji.myapplication123.ALTER_INFO" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
清单文件所有内容
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MyApplication123" tools:targetApi="31"> <!--配置LoginInfo--> <activity android:name=".LoginInfo" android:exported="false" /> <!----> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--配置隐式意图--> <activity android:name=".AlterInfo" android:exported="true"> <intent-filter> <action android:name="com.xiji.myapplication123.ALTER_INFO" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
4.如何启动和关闭
1)启动
public void startActivity (Intent intent);
//创建意图,并且指定要跳转的页面
Intent intent = new Intent(MainActivity.this,LoginInfo.class);
//启动
startActivity(intent);
2)关闭
public void finsh();
控件.设置监听事件((){
public void 事件{
finsh();//调用finsh()关闭就可以了
}
});
3.Intent与IntentFilter
1)Intent
Intent
是一种消息对象,它可以在不同组件之间发送,以执行特定的动作。它可以携带数据,并且可以指定要执行的操作的类型、目标组件以及一些额外的数据。
1-主要用途
- 启动 Activity:使用
startActivity(Intent)
方法。 - 启动 Service:使用
startService(Intent)
方法。 - 发送广播:使用
sendBroadcast(Intent)
,sendOrderedBroadcast(Intent, String)
, 等方法。
2-创建 Intent
// 显式 Intent - 直接指定目标组件
Intent explicitIntent = new Intent(context, TargetActivity.class);
// 隐式 Intent - 通过 Action 和 Category 来匹配合适的组件
Intent implicitIntent = new Intent();
implicitIntent.setAction(Intent.ACTION_VIEW);
implicitIntent.setData(Uri.parse("http://www.example.com"));
3-添加额外数据
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("key", "value");
startActivity(intent);
4-接收额外数据
Intent intent = getIntent();
String value = intent.getStringExtra("key");
2)IntentFilter
IntentFilter
用来定义一个组件愿意接收哪种类型的 Intent
。它通常在 AndroidManifest.xml
文件中与组件一起声明,或者在代码中动态创建。
1-声明方式
-
在 Manifest 文件中声明:
<activity android:name=".TargetActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" /> </intent-filter> </activity>
-
在代码中动态创建:
IntentFilter filter = new IntentFilter(); filter.addAction("com.example.MY_ACTION"); registerReceiver(myBroadcastReceiver, filter);
2-组成部分
1--Action
表示 Intent
的动作,例如 ACTION_VIEW
, ACTION_SEND
等。
2--Category
提供 Intent
的附加信息,比如 CATEGORY_DEFAULT
, CATEGORY_BROWSABLE
等。
3--Data
指定 Intent
操作的数据和数据类型,例如 URI 和 MIME 类型。
3-匹配规则
当系统尝试找到能够响应给定 Intent
的组件时,会根据 Intent
和 IntentFilter
的以下属性进行匹配:
1--Action
Intent
的 action
必须与 IntentFilter
中的一个 action
匹配。
2--Category
Intent
中的所有 category
都必须在 IntentFilter
中出现。
3--Data
如果 Intent
包含 data
,那么 data
必须与 IntentFilter
中的一个 data
规范匹配。
4.Activity之间的传递
1)数据传递
1-通过putExtra()方法传递
1--数据的传递
Intent intent = new Intent();
//页面跳转
intent.setClass(MainActivity.this,LoginInfo.calss)
//要传递的数据
intent.putExtra("键名","数据");
2--数据的接受
Intent intent = getIntent();
//通过键名获取
intent.getStringExtra("键名")
2-通过通过Bundle类传递数据
1--数据发送
Intent intent = new Intent();
//设置跳转的
intent.setClass(this,LoginInfo.class);
//创建并且封装Bundle类
Bundle bundle = new Bundle();
bundle.putString("键名","键值")
intent.putString(bundle);
startActivity(intent);
2--数据接受
//获取bundle对象
Bundle bundle = getIntent().getExtras();
//通过键名取
String 名字 = bundle.getString("键名")
2)数据回传
1. startActivityForResult()方法 (activity销毁时,返回数据)
startActivityForResult(Intent 意图, int 结果响应码);
2.setResult()方法
setResult(int 结果响应码,Intent 意图)
3.onActivityResult()
接受回传数据
重写回传Activity页面的的onActivityResult()方法;
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); }
案例:模拟登录修改
流程图:
1.代码
1--xml代码
1---activity_main.xml代码
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="用户登录" android:gravity="center" android:textSize="20sp" android:textColor="#F6F6F6" tools:ignore="MissingConstraints" android:background="#46E90B" android:padding="20sp" /> <!--用户框--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:layout_marginTop="60dp" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="149dp" /> <EditText android:id="@+id/editName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="输入用户名" android:inputType="text" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="136dp" /> </LinearLayout> <!--密码框--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 码" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="222dp" /> <EditText android:id="@+id/editPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="请输入用户密码" android:inputType="textPassword" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="208dp" /> </LinearLayout> <!--登录按钮--> <Button android:id="@+id/loginButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#1781EB" android:text="登录" android:theme="@style/Theme.Design.NoActionBar" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="378dp" android:layout_gravity="center" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
2---activity_login_main.xml代码
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LoginInfo"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="用户信息" android:gravity="center" android:textSize="20sp" android:textColor="#F6F6F6" tools:ignore="MissingConstraints" android:background="#02D8F4" android:padding="20sp" /> <!--中间布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:layout_marginTop="60dp" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="149dp" /> <EditText android:id="@+id/editNameInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="用户名" android:inputType="text" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="136dp" android:enabled="false" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 码" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="222dp" /> <EditText android:id="@+id/editPasswordInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="密码" android:inputType="textPassword" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="208dp" android:enabled="false" /> </LinearLayout> <Button android:id="@+id/loginAlterButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#1781EB" android:text="修改" android:theme="@style/Theme.Design.NoActionBar" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="378dp" android:gravity="center" android:layout_gravity="center" android:layout_marginTop="200dp" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
3---activity_alter_info.xml代码
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".AlterInfo"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="用户信息修改" android:gravity="center" android:textSize="20sp" android:textColor="#F6F6F6" tools:ignore="MissingConstraints" android:background="#E9D30B" android:padding="20sp" /> <!--控件--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:layout_marginTop="60dp" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="149dp" /> <EditText android:id="@+id/editAlterNameInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="用户名" android:inputType="text" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="136dp" android:enabled="true" /> </LinearLayout> <!--控件--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 码" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="77dp" tools:layout_editor_absoluteY="222dp" /> <EditText android:id="@+id/editAlterPasswordInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="密码" android:inputType="text" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="208dp" android:enabled="true" /> </LinearLayout> <Button android:id="@+id/loginAlterButtonInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#1781EB" android:text="点击修改" android:theme="@style/Theme.Design.NoActionBar" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="145dp" tools:layout_editor_absoluteY="378dp" android:layout_marginTop="50dp" android:layout_gravity="center" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
4.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MyApplication123" tools:targetApi="31"> <!--配置LoginInfo--> <activity android:name=".LoginInfo" android:exported="false" /> <!----> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--配置隐式意图--> <activity android:name=".AlterInfo" android:exported="true"> <!--这里面的活动名字要和action名字一样--> <intent-filter> <action android:name="com.xiji.myapplication123.ALTER_INFO" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
2--java代码
1---MainActivity
package com.xiji.myapplication123; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class MainActivity extends AppCompatActivity { //获取控件 private EditText username; private EditText password; private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); //控件初始化 initView(); //事件绑定 initListener(); } //控件初始化 private void initView() { username = findViewById(R.id.editName); password = findViewById(R.id.editPassword); loginButton = findViewById(R.id.loginButton); } //事件绑定 private void initListener() { loginButton.setOnClickListener(v -> { String user = username.getText().toString(); String pwd = password.getText().toString(); //显示意图 Intent intent = new Intent(MainActivity.this, LoginInfo.class); //传递输入的数据 if (user.equals("") || pwd.equals("")) { Toast.makeText(MainActivity.this, "账户和密码不能为空", Toast.LENGTH_SHORT); return; } intent.putExtra("username", user); intent.putExtra("password", pwd); startActivity(intent); Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show(); }); } }
2---LoginInfo
package com.xiji.myapplication123; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class LoginInfo extends AppCompatActivity { //获取展示控件,并且把信息展示 private EditText username; private EditText password; //修改按钮 private Button alterButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_login_info); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); //控件初始化 initView(); //监听初始化 initListener(); //初始化数据 initData(); } //控件初始化 private void initView(){ username = findViewById(R.id.editNameInput); password = findViewById(R.id.editPasswordInput); alterButton = findViewById(R.id.loginAlterButton); } private void initListener(){ alterButton.setOnClickListener(v -> { //Bundle传递信息 Bundle bundle = new Bundle(); //创建意图 Intent intent = new Intent(); //隐式传递 intent.setClass(this, AlterInfo.class); intent.setAction("com.xiji.myapplication123.ALTER_INFO"); //传递数据 bundle.putString("username", username.getText().toString()); bundle.putString("password", password.getText().toString()); intent.putExtras(bundle); //启动 //发送请求 如果要获取返回结果,必须要带请求码 startActivityForResult(intent, 100); }); } /*** * 接受数据,数据传递 */ private void initData(){ Intent intent = getIntent(); if(intent != null){ Bundle bundle = intent.getExtras(); username.setText(bundle.getString("username")); password.setText(bundle.getString("password")); } Toast.makeText(this, "数据已接收", Toast.LENGTH_SHORT); } /** * 数据回传监听 */ @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); System.out.println("接受回传"+data); Toast.makeText(this, "接受回传", Toast.LENGTH_SHORT); //根据返回码不同做出不同的效果 //接受请求 if (resultCode == 200 && requestCode == 100) { //获取Bundle数据 Bundle bundle = data.getExtras(); //修改成功 username.setText(bundle.getString("username")); password.setText(bundle.getString("password")); Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT); return; } //修改失败 Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT); } }
3---AlterInfo
package com.xiji.myapplication123; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class AlterInfo extends AppCompatActivity { //控件初始化 private EditText alter_name; private EditText alter_password; //按钮 private Button alter_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_alter_info); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); //控件初始化 initView(); //事件绑定 initListener(); //获取数据 initData(); } //控件初始化 private void initView(){ alter_name = findViewById(R.id.editAlterNameInput); alter_password = findViewById(R.id.editAlterPasswordInput); alter_button = findViewById(R.id.loginAlterButtonInfo); } //按钮监听并且回传 private void initListener(){ alter_button.setOnClickListener(v -> { //回传数据 Bundle bundle = new Bundle(); bundle.putString("username", alter_name.getText().toString()); bundle.putString("password", alter_password.getText().toString()); //设置回传数据 //通过意图返回 Intent intent = new Intent(AlterInfo.this, LoginInfo.class); intent.putExtras(bundle); setResult(200, intent); Toast.makeText(this, "userName:: "+alter_name.getText().toString()+"\npassword::"+alter_password.getText().toString(), Toast.LENGTH_SHORT).show(); //数据销毁 finish(); }); } //获取数据接受 public void initData(){ Intent intent = getIntent(); if(intent != null){ Bundle bundle = intent.getExtras(); alter_name.setText(bundle.getString("username")); alter_password.setText(bundle.getString("password")); } } }