网站根目录,新媒体包不包括公司网站的建设,企业建设H5响应式网站的5大好处,如何做好网站内更新组件通信1 获取子活动的返回值
创建Activity时实现自动注册#xff01;【Activity必须要注册才能使用】 默认 LinearLayout 布局#xff0c;注意 xml 中约束布局的使用#xff1b;
若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可#xff0c;记得 设置线性布局…组件通信1 获取子活动的返回值
创建Activity时实现自动注册【Activity必须要注册才能使用】 默认 LinearLayout 布局注意 xml 中约束布局的使用
若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可记得 设置线性布局的方向orientation activity_main1中约束布局
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text登录app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentandroid:idid/btn_login/LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:gravitycenterapp:layout_constraintTop_toBottomOfid/btn_loginTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text用户名 /EditTextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:idid/edt_name//LinearLayout/androidx.constraintlayout.widget.ConstraintLayout
activity_main2中约束布局
父布局约束_LineayLayoutid值是linear
app:layout_constraintBottom_toBottomOfparent 底部约束 app:layout_constraintEnd_toEndOfparent 右边约束 app:layout_constraintStart_toStartOfparent 左边约束 app:layout_constraintTop_toTopOfparent 顶部约束
子空间约束_Button
app:layout_constraintTop_toBottomOfid/linear 顶部添加约束到父布局控件的底部 app:layout_constraintEnd_toEndOfid/linear 右边添加约束到父布局控件右边 app:layout_constraintStart_toStartOfid/linear 左边添加约束到父布局控件左边
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivity2LinearLayoutandroid:idid/linearandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:orientationhorizontalapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text用户名 /EditTextandroid:idid/edt_nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_content //LinearLayoutButtonandroid:idid/btn_returnandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:text返回app:layout_constraintTop_toBottomOfid/linearapp:layout_constraintEnd_toEndOfid/linearapp:layout_constraintStart_toStartOfid/linear /
/androidx.constraintlayout.widget.ConstraintLayout
MainActivity.java
package com.example.exp4_2;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;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 {Button btn_login;EditText edt_name;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;});btn_login findViewById(R.id.btn_login);btn_login.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {//显式启动Intent intent new Intent(MainActivity.this, MainActivity2.class);//以sub_activity的方式启动子Activity//参数两个 intent int(请求码)startActivityForResult(intent,0);}});}Overrideprotected void onActivityResult(int requestCode, int resultCode, Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);edt_name findViewById(R.id.edt_name);//得到返回值edt_name.setText(data.getStringExtra(name));}
} MainActivity2.java
package com.example.exp4_2;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;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 MainActivity2 extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {Button btn_return;EditText edt_name;super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main2);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;});btn_return findViewById(R.id.btn_return);edt_name findViewById(R.id.edt_name);btn_return.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent();intent.putExtra(name,edt_name.getText().toString());//将intent容器中储存的Activity的返回值作为参数传给setResult方法;setResult(0,intent);finish();}});}
}
结果
点击 登录 按钮进入子活动2在子活动2中点击 返回 按钮将活动2页面中的用户名作为子活动的返回信息通过 intent 传递给父活动1并显示在父活动1中的EditText 组件通信2
题目要求
用户点击“启动Activity1”和“启动Activity2”按钮时程序将分别启动子SubActivity1和SubActivity2
SubActivity1提供了一个输入框以及“接受”和“撤销”两个按钮。如果在输入框中输入信息后点击“接受”按钮程序会把输入框中的信息传递给其父Activity并在父Activity的界面上显示。 如果用户点击“撤销”按钮则程序不会向父Activity传递任何信息。 SubActivity2主要是为了说明如何在父Activity中处理多个子Activity因此仅提供了用于关闭SubActivity2的“关闭”按钮。
注意在启动 子Activity 时用的是显式启动和隐式启动的区别在于 Intent 对象的构造形式不同
在两个 子Activity 的时候 Requestcode 和 Resultcode 的重要性
activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text启动Activity1android:idid/btn_1/Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text启动Activity2android:idid/btn_2/TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:idid/txt_result/
/LinearLayout
activity_main2.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivity2TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textsub_activity1/EditTextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:idid/edt_input/Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text接受android:idid/btn_accept/Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text撤销android:idid/btn_conceal/
/LinearLayout
activity_main3.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivity3TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textsub_activity2/Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text关闭android:idid/btn_close/
/LinearLayout
MainActivity.java
package com.example.exp4_3;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;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 {Button btn_1,btn_2;TextView txt_result;//必须设置成final 否则switch case 报错static final int request_flag1 1;static final int request_flag2 2;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;});btn_1 findViewById(R.id.btn_1);btn_2 findViewById(R.id.btn_2);btn_1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent(MainActivity.this, MainActivity2.class);//参数两个 Intent 请求码requestcode-intstartActivityForResult(intent,request_flag1);}});btn_2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent(MainActivity.this, MainActivity3.class);//参数两个 Intent 请求码requestcode-intstartActivityForResult(intent,request_flag2);}});}Overrideprotected void onActivityResult(int requestCode, int resultCode, Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);txt_result findViewById(R.id.txt_result);switch(requestCode){case request_flag1://判断结果码是 接受 还是 撤销if(resultCodeRESULT_OK){txt_result.setText(data.getStringExtra(name));}else{txt_result.setText(sub_activity1返回空信息);}break;case request_flag2:txt_result.setText(sub_activity2返回空信息);break;}}
}
MainActivity2.java
package com.example.exp4_3;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;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 MainActivity2 extends AppCompatActivity {Button btn_accept,btn_conceal;EditText edt_input;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main2);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;});btn_accept findViewById(R.id.btn_accept);btn_conceal findViewById(R.id.btn_conceal);edt_input findViewById(R.id.edt_input);btn_accept.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {//显式启动Intent intent new Intent();intent.putExtra(name,edt_input.getText().toString());//参数两个 结果码Result_OK IntentsetResult(RESULT_OK,intent);finish();}});btn_conceal.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {//Intent intent new Intent();//setResult(RESULT_CANCELED,intent);//参数两个 结果码Result_CANCELED NULLsetResult(RESULT_CANCELED,null);finish();}});}
}
MainActivity3.java
package com.example.exp4_3;import android.os.Bundle;
import android.view.View;
import android.widget.Button;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 MainActivity3 extends AppCompatActivity {Button btn_close;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main3);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;});Button btn_close findViewById(R.id.btn_close);btn_close.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {setResult(RESULT_CANCELED,null);finish();}});}
}
结果 点击 启动Activity1 输入“请输入...” 点击 接受 点击 撤销 点击 启动Activity2 点击 关闭 点击 关闭