Android中的Activity(案例+代码+效果图)

目录

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"><applicationandroid: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--><activityandroid:name=".LoginInfo"android:exported="false" /><!----><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--配置隐式意图--><activityandroid: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_VIEWACTION_SEND 等。

2--Category

        提供 Intent 的附加信息,比如 CATEGORY_DEFAULTCATEGORY_BROWSABLE 等。

3--Data

        指定 Intent 操作的数据和数据类型,例如 URI 和 MIME 类型。

3-匹配规则

当系统尝试找到能够响应给定 Intent 的组件时,会根据 IntentIntentFilter 的以下属性进行匹配:

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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid: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"/><!--用户框--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_marginTop="60dp"><TextViewandroid: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" /><EditTextandroid: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>
<!--密码框--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><TextViewandroid: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" /><EditTextandroid: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><!--登录按钮--><Buttonandroid: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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid: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"/><!--中间布局--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_marginTop="60dp"><TextViewandroid: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" /><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><TextViewandroid: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" /><EditTextandroid: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><Buttonandroid: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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid: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"/><!--控件--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_marginTop="60dp"><TextViewandroid: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" /><EditTextandroid: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><!--控件--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><TextViewandroid: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" /><EditTextandroid: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><Buttonandroid: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"><applicationandroid: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--><activityandroid:name=".LoginInfo"android:exported="false" /><!----><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--配置隐式意图--><activityandroid: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;@Overrideprotected 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;@Overrideprotected 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);}/*** 数据回传监听*/@Overrideprotected 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;@Overrideprotected 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"));}}
}

2.效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android实现App内直接预览本地PDF文件

在App内实现直接预览pdf文件&#xff0c;而不是通过调用第三方软件&#xff0c;如WPS office等打开pdf。 主要思路&#xff1a;通过PhotoView将pdf读取为图片流进行展示。 一、首先&#xff0c;获取对本地文件读取的权限 在AndrooidManifest.xml中声明权限&#xff0c;以及页…

神经网络整体架构

文章目录 1.输入层Input2.卷积层Conv3.激活函数层(一)Sigmoid 函数(二)Tanh 函数(三)修正线性单元ReLU(四)Leaky ReLU函数(带泄露的Relu)(五)参数化ReLU 4.池化层POOL5.全连接层FC6.输出层Output 用全连接神经网络处理大尺寸图像具有三个明显的缺点&#xff1a; ①将图像展开为…

gitlab-ci 集成 k3s 部署spring boot 应用

环境 一台ECS gitlab 16.10 一台ECS gitlab-runner docker方式 一台腾讯云服务器 k3s k3s version v1.30.5k3s1 (9b586704) go version go1.22.6 本地: idea 2024 准备开始 gitlab上创建"api"仓库,本地IDEA 创建spring boot web demo项目k8s-gitlab-demo. 确保能…

【计算机网络】计算机网络相关术语

文章目录 NAT概述NAT的基本概念NAT的工作原理1. **基本NAT&#xff08;静态NAT&#xff09;**2. **动态NAT**3. **NAPT&#xff08;网络地址端口转换&#xff0c;也称为PAT&#xff09;** 底层实现原理1. **数据包处理**2. **转换表**3. **超时机制** NAT的优点NAT的缺点总结 P…

跟踪用户状态,http协议无状态 Cookie HttpSession,Session和Cookie的关系

1.概念分析 跟踪用户状态指的是web应用能够分辨请求属于哪个用户&#xff0c;进而记录用户的状态&#xff0c;从而为用户提供连续的针对性的服务。比如有多个客户在同一个购物网站上购物&#xff0c;每一个用户都会有一个虚拟的购物车。当某个客户发送请求将商品添加到购物车时…

初学Qt之环境安装与 hello word

环境&#xff1a; Qt Creator 4.11.0 (Community) Qt 5.14.0 目录 1.Qt环境配置 1.1 下载Qt 5.14.0 1.2 注册Qt账号 1.3 安装Qt 1.4 配置环境变量 2.创建项目 2.1 创建一个项目 2.2 初始代码解析 2.3 可视化GUI ​编辑 2.4 hello word 2.4.1 可视化hello word …

Spring Boot知识管理系统:创新与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

公开课学习:软件测试面试3大难题

1.验证码机制的处理&#xff1a;自动化遇到验证码怎么办?怎么测试? 流程&#xff1a;先识别元素&#xff0c;再对元素进行操作。实际上&#xff0c;验证码无法用自动化技术操作解决&#xff0c;都是由开发给万能码&#xff0c;或者屏蔽验证码去解决&#xff01;那如果不能屏…

数据结构——优先级队列(堆)

概念&#xff1a; 在操作数据的时候&#xff0c;操作的数据具有优先级&#xff0c;需要返回最高级别的优先级数据或者添加新对象时就需要用到优先级队列。 jdk1.8中的PrioriytQueue底层实现了堆这种数据结构实际上&#xff0c;堆其实就是在完全二叉树进行调整而来。 堆&#x…

C++STL--------vector

文章目录 一、vector常用接口介绍1、initializer_list2、接口有很多类似3、typeid(类型).name()4、find() 函数5、内置类型构造 二、vector()常用接口模拟实现 截图来源网站&#xff1a;https://legacy.cplusplus.com/reference/vector/vector/ 一、vector常用接口介绍 是一个…

哪种护眼大路灯孩子用着最好?公认最好的护眼大路灯

哪种护眼大路灯孩子用着最好&#xff1f;最近也有不少家长关注到了孩子视力健康的这个情况&#xff0c;很着急开始寻找各种能够减少孩子因为不良光线影响视力健康的方法&#xff0c;其中大路灯以良好的表现成为家长们的首选&#xff0c;但快速发展的市场中&#xff0c;却涌入了…

【C】C语言常见概念~

C语言常见概念 转义字符 转义字符&#xff0c;顾名思义&#xff0c;转变原来意思的字符 比如 #include <stdio.h> int main() {printf("abcndef");return 0; }输出的结果为&#xff1a; 将代码修改一下&#xff1a; #include <stdio.h> int main(…

双目视觉搭配YOLO实现3D测量

一、简介 双目&#xff08;Stereo Vision&#xff09;技术是一种利用两个相机来模拟人眼视觉的技术。通过对两个相机获取到的图像进行分析和匹配&#xff0c;可以计算出物体的深度信息。双目技术可以实现物体的三维重建、距离测量、运动分析等应用。 双目技术的原理是通过两…

SpringBoot基础(五):集成JUnit5

SpringBoot基础系列文章 SpringBoot基础(一)&#xff1a;快速入门 SpringBoot基础(二)&#xff1a;配置文件详解 SpringBoot基础(三)&#xff1a;Logback日志 SpringBoot基础(四)&#xff1a;bean的多种加载方式 SpringBoot基础(五)&#xff1a;集成JUnit5 目录 一、JUnit…

AIGC毕设项目分享:基于RAG的数字人对话系统及其应用

本研究的主要目标是设计并实现一个基于检索增强生成&#xff08;RAG&#xff09;技术的数字人对话系统&#xff0c;旨在提升数字人系统在多轮对话中的上下文管理、情境感知能力以及动态内容生成效果。系统结合了深度学习中的最新大语言模型技术&#xff0c;通过引入RAG框架来增…

K8S配置MySQL主从自动水平扩展

前提环境 操作系统Ubuntu 22.04 K8S 1.28.2集群&#xff08;1个master2个node&#xff09; MySQL 5.7.44部署在K8S的主从集群 metrics-server v0.6.4 概念简介 在K8s中扩缩容分为两种 ●Node层面&#xff1a;对K8s物理节点扩容和缩容&#xff0c;根据业务规模实现物理节点自动扩…

爬虫案例——网易新闻数据的爬取

案例需求&#xff1a; 1.爬取该新闻网站——&#xff08;网易新闻&#xff09;的数据&#xff0c;包括标题和链接 2.爬取所有数据&#xff08;翻页参数&#xff09; 3.利用jsonpath解析数据 分析&#xff1a; 该网站属于异步加载网站——直接网页中拿不到&#xff0c;需要…

MySQL-08.DDL-表结构操作-创建-案例

一.MySQL创建表的方式 1.首先根据需求文档定义出原型字段&#xff0c;即从需求文档中可以直接设计出来的字段 2.再在原型字段的基础上加上一些基础字段&#xff0c;构成整个表结构的设计 我们采用基于图形化界面的方式来创建表结构 二.案例 原型字段 各字段设计如下&…

深入理解线性表--顺序表

目录 顺序表- Seqlist -> sequence 顺序 list 表 顺序表的概念 问题与解答 顺序表的分类 静态顺序表 动态顺序表 问题与解答(递进式) 动态顺序表的实现 尾插 头插 尾删 头删 指定位置插入 指定位置删除 销毁 总结 前言&#xff1a;线性表是具有相同特性的一类数据结构…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…