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
相关产品推荐
相关产品推荐

