Activity的跳转和数据传递

本文介绍了Android中Activity的显式和隐式跳转方式,以及如何在Activity之间进行数据传递,包括使用startActivityForResult来启动Activity并获取返回结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 显式跳转和隐式跳转
  • Activity之间的数据传递
  • startActivityForResult:启动Activity,结束后返回结果

显式跳转和隐式跳转

package com.example.test0508.jump;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.test0508.R;

public class AActivity extends AppCompatActivity {

    private Button mBtnJump1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);

        /**
         * 显式跳转,从A跳到B
         * 方法一
         */
        mBtnJump1 = findViewById(R.id.btn_jump1);
        mBtnJump1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(AActivity.this,BActivity.class);//从Activity.this跳到B.class
                startActivity(intent);
            }
        });

        /**
         * 显示的第二个办法
         *
            Intent intent = new Intent();
            intent.setClass(AActivity.this,BActivity.class);
            startActivity(intent);
         */

        /**
         * 显示跳转的第三个方法
             Intent intent = new Intent();
             intent.setClassName(AActivity.this,"com.example.test0508.jump.BActivity");
             startActivity(intent);
         */

        /**
         * 显示跳转的第四个方法
           Intent intent = new Intent();
             intent.setComponent(new ComponentName(AActivity.this,"com.example.test0508.jump.BActivity"));
             startActivity(intent);
         */

        /**
         * 隐式调用1
            Intent intent = new Intent();
            intent.setAction("com.example.test0508.test.BActivity");
            startActivity(intent);
         */
    }
}


Activity之间的数据传递

AACtivity

package com.example.test0508.jump;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.test0508.R;

public class AActivity extends AppCompatActivity {

    private Button mBtnJump1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);

        /**
         * 数据传递
         */
        mBtnJump1 = findViewById(R.id.btn_jump1);
        mBtnJump1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(AActivity.this,BActivity.class);//从Activity.this跳到B.class
                //数据传递
                Bundle bundle = new Bundle();
                bundle.putString("name","李");
                bundle.putInt("age",21);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }
}

BActivity

package com.example.test0508.jump;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import com.example.test0508.R;


public class BActivity extends AppCompatActivity {


    private TextView mTvTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        mTvTitle = findViewById(R.id.tv_jump_title);
        Bundle bundle = getIntent().getExtras();
        String name = bundle.getString("name");
        int age = bundle.getInt("age");

        mTvTitle.setText("name:" + name + "age" + age);

    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.example.test0508.jump;

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

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.test0508.R;

public class AActivity extends AppCompatActivity {

    private Button mBtnJump1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);

        /**
         * 数据传递
         */
        mBtnJump1 = findViewById(R.id.btn_jump1);
        mBtnJump1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(AActivity.this,BActivity.class);//从Activity.this跳到B.class
                //数据传递
                Bundle bundle = new Bundle();
                bundle.putString("name","李");
                bundle.putInt("age",21);
                intent.putExtras(bundle);
//                startActivity(intent);
                //这个0是请求码,判断哪一个控件返回
                startActivityForResult(intent,0);
            }
        });
    }


    /**
     * 接受B返回的数据
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Toast.makeText(AActivity.this,"返回的数据"+data.getExtras().getString("title"),Toast.LENGTH_SHORT).show();
    }
}

package com.example.test0508.jump;

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.TextView;

import com.example.test0508.R;


public class BActivity extends AppCompatActivity {


    private TextView mTvTitle;
    private Button mBtnFinish;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        mTvTitle = findViewById(R.id.tv_jump_title);

        /**
         * 从A那边获取数据并设置到自己的text里面
         */
        final Bundle bundle = getIntent().getExtras();
        String name = bundle.getString("name");
        int age = bundle.getInt("age");
        mTvTitle.setText("name:" + name + "age" + age);

        /**
         * 结束按钮,并返回数据给A
         */
        mBtnFinish = findViewById(R.id.btn_jump_finish);
        mBtnFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                Bundle bundle1 = new Bundle();
                bundle1.putString("title","我回来了");
                intent.putExtras(bundle1);
                setResult(Activity.RESULT_OK,intent);
                finish();//关闭掉
            }
        });

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值