You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio:如何跨Activity传递Spinner与EditText的用户输入?

Android跨Activity数据传递解决方案

问题说明

需要将RegisterActivity中以下用户输入传递到ListsActivity:

  • EditText:球衣号、身高、体重
  • Spinner:性别、年龄、力量、耐力、心肺功能
    当前仅能实现Activity跳转,无法传递数据。

步骤1:修改RegisterActivity,添加数据传递逻辑

在RegisterActivity中获取用户输入,通过Intent携带数据完成跳转:

package com.example.fitnessassessmentcell;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class RegisterActivity extends AppCompatActivity {
    // 声明控件引用,避免重复查找
    private Button button;
    private EditText etJersey, etHeight, etWeight;
    private Spinner spinnerGender, spinnerAge, spinnerStrength, spinnerEndurance, spinnerCardio;

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

        // 初始化所有控件
        button = findViewById(R.id.verify);
        etJersey = findViewById(R.id.EditTextJerseyNumber);
        etHeight = findViewById(R.id.EditTextHeightNumber);
        etWeight = findViewById(R.id.EditTextWeightNumber);
        spinnerGender = findViewById(R.id.spinner_gender);
        spinnerAge = findViewById(R.id.spinner_age);
        spinnerStrength = findViewById(R.id.spinner_strength);
        spinnerEndurance = findViewById(R.id.spinner_endurance);
        spinnerCardio = findViewById(R.id.spinner_cardio);

        // 初始化Spinner适配器(保留原有逻辑)
        ArrayAdapter<CharSequence> adapterGender = ArrayAdapter.createFromResource(this, R.array.gender, android.R.layout.simple_spinner_item);
        adapterGender.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerGender.setAdapter(adapterGender);

        ArrayAdapter<CharSequence> adapterAge = ArrayAdapter.createFromResource(this, R.array.age, android.R.layout.simple_spinner_item);
        adapterAge.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerAge.setAdapter(adapterAge);

        ArrayAdapter<CharSequence> adapterStrength = ArrayAdapter.createFromResource(this, R.array.strength, android.R.layout.simple_spinner_item);
        adapterStrength.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerStrength.setAdapter(adapterStrength);

        ArrayAdapter<CharSequence> adapterEndurance = ArrayAdapter.createFromResource(this, R.array.endurance, android.R.layout.simple_spinner_item);
        adapterEndurance.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerEndurance.setAdapter(adapterEndurance);

        ArrayAdapter<CharSequence> adapterCardio = ArrayAdapter.createFromResource(this, R.array.cardio, android.R.layout.simple_spinner_item);
        adapterCardio.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerCardio.setAdapter(adapterCardio);

        // 按钮点击事件:获取数据并传递
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取EditText输入内容
                String jersey = etJersey.getText().toString().trim();
                String height = etHeight.getText().toString().trim();
                String weight = etWeight.getText().toString().trim();

                // 获取Spinner选中项
                String gender = spinnerGender.getSelectedItem().toString();
                String age = spinnerAge.getSelectedItem().toString();
                String strength = spinnerStrength.getSelectedItem().toString();
                String endurance = spinnerEndurance.getSelectedItem().toString();
                String cardio = spinnerCardio.getSelectedItem().toString();

                // 创建Intent并添加数据
                Intent intent = new Intent(RegisterActivity.this, ListsActivity.class);
                intent.putExtra("KEY_JERSEY", jersey);
                intent.putExtra("KEY_HEIGHT", height);
                intent.putExtra("KEY_WEIGHT", weight);
                intent.putExtra("KEY_GENDER", gender);
                intent.putExtra("KEY_AGE", age);
                intent.putExtra("KEY_STRENGTH", strength);
                intent.putExtra("KEY_ENDURANCE", endurance);
                intent.putExtra("KEY_CARDIO", cardio);

                // 启动ListsActivity
                startActivity(intent);
            }
        });
    }
}

核心要点:

  • 将控件引用提升到类级别,减少重复调用findViewById的开销
  • 用Intent.putExtra(key, value)传递数据,key作为唯一标识,接收时需完全匹配
  • Spinner通过getSelectedItem().toString()获取选中的文本内容

步骤2:修改ListsActivity,接收并使用传递的数据

在ListsActivity中获取Intent携带的数据,可根据需求展示或处理:

package com.example.fitnessassessmentcell;

import androidx.appcompat.app.AppCompatActivity;

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

public class ListsActivity extends AppCompatActivity {

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

        // 获取启动当前Activity的Intent
        Intent intent = getIntent();
        if (intent != null) {
            // 通过key取出对应数据
            String jersey = intent.getStringExtra("KEY_JERSEY");
            String height = intent.getStringExtra("KEY_HEIGHT");
            String weight = intent.getStringExtra("KEY_WEIGHT");
            String gender = intent.getStringExtra("KEY_GENDER");
            String age = intent.getStringExtra("KEY_AGE");
            String strength = intent.getStringExtra("KEY_STRENGTH");
            String endurance = intent.getStringExtra("KEY_ENDURANCE");
            String cardio = intent.getStringExtra("KEY_CARDIO");

            // 示例:将数据拼接后用Toast展示
            String data = String.format(
                    "球衣号:%s\n身高:%s\n体重:%s\n性别:%s\n年龄:%s\n力量:%s\n耐力:%s\n心肺功能:%s",
                    jersey, height, weight, gender, age, strength, endurance, cardio
            );
            Toast.makeText(this, data, Toast.LENGTH_LONG).show();

            // 也可将数据设置到TextView等UI控件,示例:
            // TextView tvData = findViewById(R.id.tv_data);
            // tvData.setText(data);
        }
    }
}

核心要点:

  • 用getIntent()获取启动当前Activity的Intent实例
  • 通过getStringExtra(key)取出对应数据,key必须和传递时一致
  • 可根据业务需求将数据展示在UI控件,或进行后续逻辑处理

内容的提问来源于stack exchange,提问作者meowser_code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:57:13