2021-09-28

本文讲解了Android中Activity间的跳转原理,如何使用Intent传递数据,包括单向传递和双向传递的实例。通过创建布局、编写Java代码和配置Manifest,展示了如何在多个界面间传递参数并接收结果。
摘要由CSDN通过智能技术生成

Android之Activity
下面分为原理趣讲和实际案例
原理:
只有创建意图后指定下一个跳转在哪才能跳转,就语句
Intent intent = new Intent(MainBActivity.this,MainCActivity.class);
做题步骤
1,先创layout(这一步只要创建新的空的Activity则能在三步中均能创
建相关代码)
2,写代码.java
3,manifest里添加页面

用intent跳转页面,用bundle传递数据

两个界面单向传数据
用intent(快递包装盒),bundle(包裹),startActivity(单向邮局)
寄件人需要在快递包装盒写地址,就是new Intent(MainBActivity.this,MainCActivity.class);
收件人首先通过getIntent.getExtras(取件码)从邮局取到包裹,再打开包裹完成相应的功能

多个界面的双向传数据
寄件人的快递包装盒,包裹的功能不变,邮局变为startActivityForResult有双向寄件的邮局
同时还应该在往返车里指定收件人的名字(标识码),如startActivityForResult(intentY,1);
收件人首先去邮局通过取件码取得包裹,完成相应功能
然后创建新的快递包装盒(这里的intent可以写地址,也可以不写,因为邮局里有记录),然后装入新的包裹,
再通过setResult()(返回马车,里面需要表明已经收到上一个快递)送给收件人,这时收件人通过重写onActivityResult()方法(去被邮寄到的地方取件)去获取包裹
在该方法里有几点判断(收件码)

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data!=null && resultCode== Activity.RESULT_OK && requestCode==0){
            Bundle bundle = data.getExtras();
            X.setText(bundle.getString("paramX"));

        }
        if (data!=null && resultCode== Activity.RESULT_OK && requestCode==1){
            Bundle bundle = data.getExtras();
            Y.setText(bundle.getString("paramY"));
        }
    }

intent是否为空,resultCode是否为Activity.RESULT_OK(第一次寄过去,他是否收到)
requestCode是否是某个人寄的(标识符),三者都确定后,就能通过取件码取件,然后打开包裹执行想执行的功能。

案例:
xml文档
首页

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp">

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="参数X="
            android:textSize="30sp" />


        <EditText
            android:id="@+id/paramX"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:hint="填入数字" />

    </TableRow>

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="参数Y="
            android:textSize="30sp" />


        <EditText
            android:id="@+id/paramY"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:hint="填入数字" />

    </TableRow>

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="参数X+Y="
            android:textSize="30sp" />


        <EditText
            android:id="@+id/paramx_Y"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:hint="填入数字" />

    </TableRow>


    <Button
        android:id="@+id/submitX"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取X值" />
    <Button
        android:id="@+id/submitY"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取Y值" />
    <Button
        android:id="@+id/repleyX_Y"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="求x+y值" />
</TableLayout>

第二页

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp">

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="参数X="
            android:textSize="30sp" />


        <EditText
            android:id="@+id/paramB"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:hint="填入数字" />

    </TableRow>


    <Button
        android:id="@+id/repleyX"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回X值" />
</TableLayout>

第三页

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp">

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="参数Y="
            android:textSize="30sp" />


        <EditText
            android:id="@+id/paramC"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:hint="填入数字" />

    </TableRow>

    <Button
        android:id="@+id/repleyY"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回Y值" />
</TableLayout>

Java代码
第一页

package com.example.hameworks_01_02;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    private EditText X,Y,Z;
    private Button screachX,screachY,screachX_Y;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        screachX=(Button) findViewById(R.id.submitX);
        screachY=(Button) findViewById(R.id.submitY);
        X=(EditText)findViewById(R.id.paramX);
        Y=(EditText)findViewById(R.id.paramY);
        Z=(EditText)findViewById(R.id.paramx_Y);
        screachX.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentX = new Intent(MainActivity.this, Main2BActivity.class);
                startActivityForResult(intentX,0);

            }
        });
        screachY.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentY=new Intent(MainActivity.this,Main2CActivity.class);
                startActivityForResult(intentY,1);
            }
        });
        screachX_Y=(Button) findViewById(R.id.repleyX_Y);
        screachX_Y.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Z.setText(String.valueOf(Integer.parseInt(X.getText().toString())+Integer.parseInt(Y.getText().toString())));
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data!=null && resultCode== Activity.RESULT_OK && requestCode==0){
            Bundle bundle = data.getExtras();
            X.setText(bundle.getString("paramX"));

        }
        if (data!=null && resultCode== Activity.RESULT_OK && requestCode==1){
            Bundle bundle = data.getExtras();
            Y.setText(bundle.getString("paramY"));
        }
    }
}

第二页

package com.example.hameworks_01_02;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Main2BActivity extends AppCompatActivity {
    private EditText X;
    private Button repleyX;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2_b);
        repleyX=(Button) findViewById(R.id.repleyX);

        repleyX.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();//这里可以不加地址,当然加了也不错
                Bundle bundle = new Bundle();
                X=(EditText) findViewById(R.id.paramB);
                bundle.putString("paramX",X.getText().toString());
                intent.putExtras(bundle);
                setResult(Activity.RESULT_OK,intent);
                finish();
            }
        });


    }
}

第三页

package com.example.hameworks_01_02;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Main2CActivity extends AppCompatActivity {
private EditText Y;
private Button repleyY;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2_c);
        repleyY=(Button) findViewById(R.id.repleyY);
        repleyY.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Main2CActivity.this,MainActivity.class);
                Bundle bundle = new Bundle();
                Y=(EditText) findViewById(R.id.paramC);
                bundle.putString("paramY",Y.getText().toString());
                intent.putExtras(bundle);
                setResult(Activity.RESULT_OK,intent);
                finish();
            }
        });
    }
}

清单xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hameworks_01_02">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Hameworks_01_02">
        <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=".Main2CActivity"
            android:exported="true" />
        <activity
            android:name=".Main2BActivity"
            android:exported="true" />

    </application>

</manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值