Android第一课——activity的创建与相互传递信息

本文介绍了一个简单的Android应用程序示例,展示了如何在两个Activity之间进行数据传递。通过MainActivity向Main2Activity发送两个字符串参数,并计算其和,再将结果返回给MainActivity。

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

本学期开始安卓的学习,更几篇博客来记录一下

首先新建工程,创建两个empty activity,此处名称都采用默认的名称。

目的是:实现从MainActivity传参数给Main2Activity(value1和value2),然后计算两个参数的和为sum,之后再返回给MainActivity。activity的转换通过按钮触发事件。

MainActivity.java文件如下:

package com.example.administrator.myapplication;

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

public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate: ");
        Button btnOpen = (Button) findViewById(R.id.btnopen);

        btnOpen.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                // 创建Intent对象 关联上下文
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                // 将两个参数放进去 此处只能放对象
                intent.putExtra("value1", "100");
                intent.putExtra("value2", "200");
                // 不需要返回值
//                startActivity(intent);
                // 需要返回值  1代表requext code
                startActivityForResult(intent, 1);
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 该函数接收requestCode和resultCode 可以对它们做判断 即当有多个activity相互作用时方便判断
        String back = data.getStringExtra("back");
        // 打印日志 显示返回的数值
        Log.d(TAG, "onActivityResult: " + back);
    }
}

Main2Activity.java代码如下:

package com.example.administrator.myapplication;

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

public class Main2Activity extends Activity {
    private static final String TAG = "Main2Activity";
    public int sum;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        // 接收传递过来的Intent对象
        Intent intent = getIntent();
        // 接收内部的参数
        String value1 = intent.getStringExtra("value1");
        String value2 = intent.getStringExtra("value2");
        // 打印两个参数的值
        Log.d(TAG, "onCreate: " + "value1:\t" + value1 + "\tvalue2\t" + value2);
        // 求和 注意将字符串对象转换为 Integer对象
        sum = Integer.parseInt(value1) + Integer.parseInt(value2);

        Button btnback = (Button) findViewById(R.id.btnBack);
        // 定义返回事件
        btnback.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentBack = new Intent(Main2Activity.this, MainActivity.class);
                // 返回字符串
                intentBack.putExtra("back", String.valueOf(sum));
                // 设置resultCode为1 并返回intentBack
                setResult(1, intentBack);
                // 结束
                finish();
            }
        });

    }
}

两个布局文件分别如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.administrator.myapplication.MainActivity">

    <TextView
        android:textSize="30dp"
        android:textColor="#FF0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="The first activity" />

    <Button
        android:id="@+id/btnopen"
        android:text="Open"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.administrator.myapplication.Main2Activity">
    <TextView
        android:textSize="30sp"
        android:textColor="#77FF0000"
        android:text="The second activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnBack"
        android:text="back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangbowj123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值