在第一个Activity中,使用文 本控件输入姓名与身高,使用单选按钻选择性别,将结果传递到第二个Activity:在第二个 Activity中显示第一个Activity传输的数据,并且单击按钮后,将数据返回到第一个Activity 中
时间: 2024-10-21 11:05:28 浏览: 17
Android中点击按钮启动另一个Activity及Activity之间传值问题
在Android应用程序中,你可以通过以下步骤实现这个功能:
1. **第一个Activity (MainActivity):**
- 首先,在布局文件中添加文本框(EditText)用于输入姓名,另一个用于输入身高(EditText),以及一组单选按钮(RadioButtons)来选择性别。比如:
```xml
<EditText android:id="@+id/nameInput" />
<EditText android:id="@+id/heightInput" />
<RadioGroup android:id="@+id/sexRadioGroup">
<RadioButton android:text="男" android:id="@+id/male RadioButton" />
<RadioButton android:text="女" android:id="@+id/female RadioButton" />
</RadioGroup>
```
- 创建一个Button,当点击时会启动第二个Activity并将数据传递过去:
```java
Button submitBtn = findViewById(R.id.submitBtn);
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameInput.getText().toString();
int height = Integer.parseInt(heightInput.getText().toString());
int sex = getSelectedSexId(); // 获取当前选中的性别ID
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", name);
intent.putExtra("height", height);
intent.putExtra("sex", sex);
startActivity(intent);
}
});
```
2. **第二个Activity (SecondActivity):**
- 在onCreate方法中接收并处理传过来的数据:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String name = extras.getString("name");
int height = extras.getInt("height");
int sex = extras.getInt("sex");
// 显示数据显示到相应控件上
TextView tvName = findViewById(R.id.tvName);
tvName.setText(name);
// 等...
}
// 添加一个按钮用于回传数据
Button backBtn = findViewById(R.id.backBtn);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("dataFromFirst", "..." + // 这里需要将姓名、身高和性别转换成字符串
...); // 你可以选择序列化或某种通用格式
setResult(RESULT_OK, intent);
finish();
}
});
}
```
3. **数据传递回第一个Activity:**
- 当用户点击返回按钮时,你在SecondActivity设置Result,并finish关闭它。然后在MainActivity中可以处理`onActivityResult()`回调,获取并更新数据。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
Bundle resultData = data.getBundleExtra("dataFromFirst");
// 更新UI或存储数据
}
}
```
阅读全文