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

Android Studio中如何将Spinner选中值从一个Activity传递到另一个Activity?

解决Spinner选中值传递到另一个Activity的问题

嘿,我看你已经搞定了EditText文本的传递,现在就差Spinner选中值这一步啦!其实你已经摸到门道了,只是代码里的小细节没处理好,咱们来一步步搞定它:

问题所在

你现在写了两个独立的按钮点击事件(第二个还被注释掉了)——这样的话,要么只传EditText的值,要么只传Spinner的值,根本没法同时把两个数据都传递过去。咱们需要把这两个逻辑合并到同一个按钮点击事件里。

修改后的完整代码

我帮你调整了Homepage的代码,把Spinner值的获取和传递和EditText的逻辑整合到一起了:

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class Homepage extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    Button btn;
    EditText et;
    Spinner spinner; // 把Spinner提升为成员变量,方便在点击事件里访问

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_homepage);
        btn = findViewById(R.id.Btnstart);
        et = findViewById(R.id.Std_Name);
        spinner = findViewById(R.id.major_spinner); // 初始化成员变量

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Homepage.this, Input.class);
                // 获取EditText的文本
                String st = et.getText().toString();
                // 获取Spinner的选中值
                String selectedMajor = spinner.getSelectedItem().toString();
                
                // 同时传递两个数据
                i.putExtra("studentName", st);
                i.putExtra("selectedMajor", selectedMajor);
                
                startActivity(i);
                finish();
            }
        });

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.majors, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String text = parent.getItemAtPosition(position).toString();
        Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}

关键修改点

  • 把Spinner spinner从onCreate方法里移出来,变成Activity的成员变量,这样按钮点击事件里就能直接访问它了
  • 在同一个按钮点击事件里,同时获取EditText和Spinner的值
  • 通过putExtra把两个数据都放到Intent里,我把key改成了更语义化的studentName和selectedMajor,你也可以用原来的名字

在Input Activity中接收数据

接下来你需要在InputActivity里获取这两个值,比如这样写:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class Input extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_input);

        // 获取传递过来的数据
        String studentName = getIntent().getStringExtra("studentName");
        String selectedMajor = getIntent().getStringExtra("selectedMajor");

        // 找到TextView用来展示内容(假设你有对应的TextView控件)
        TextView nameTv = findViewById(R.id.tv_student_name);
        TextView majorTv = findViewById(R.id.tv_selected_major);

        // 设置文本展示
        nameTv.setText("学生姓名:" + studentName);
        majorTv.setText("所选专业:" + selectedMajor);
    }
}

这样就能同时展示EditText和Spinner的内容啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:42:48