2)Activity之间传递数据的方法 在两个Activity之间通过Intent进行数据的双向传递。
时间: 2024-03-23 10:44:04 浏览: 131
在Android开发中,可以通过Intent在两个Activity之间进行数据传递。具体实现方法如下:
1. 在发送Activity中创建一个Intent对象,并通过putExtra()方法设置需要传递的数据。
```
Intent intent = new Intent(this, ReceiveActivity.class);
intent.putExtra("name", "Tom");
intent.putExtra("age", 18);
startActivity(intent);
```
2. 在接收Activity中获取传递过来的数据。
```
Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);
```
putExtra()方法的第一个参数是键值对中的键,第二个参数是键值对中的值。在接收Activity中,可以通过getStringExtra()方法获取String类型的值,getIntExtra()方法获取int类型的值。如果获取不到值,则可以设置默认值(上述代码中的第二个参数)。
通过这种方式,就可以在两个Activity之间进行数据的双向传递了。需要注意的是,传递的数据需要进行类型匹配,否则会导致数据类型转换异常。
相关问题
在第一个Activity中,使用文 本控件输入姓名与身高,使用单选按钻选择性别,将结果传递到第二个Activity:在第二个 Activity中显示第一个Activity传输的数据,并且单击按钮后,将数据返回到第一个Activity中
在Android应用程序中,要实现这种功能,你可以按照以下步骤操作:
1. **创建布局**:
- 在`FirstActivity.java`的第一个Activity中,你需要创建一个包含文本框(EditText)用于输入姓名和一个TextView用于输入身高。添加两个EditText控件(`nameEditText` 和 `heightEditText`),以及单选按钮(RadioButtons)用于选择性别,例如Male和Female。
```java
// XML布局片段
<EditText
android:id="@+id/nameEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="姓名" />
<RadioButton
android:id="@+id/maleRadioButton"
android:text="男"
android:checked="true" />
<RadioButton
android:id="@+id/femaleRadioButton"
android:text="女"
android:layout_below="@+id/maleRadioButton" />
<TextView
android:id="@+id/heightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="身高"/>
```
2. **保存数据**:
在`FirstActivity`中设置一个`onSaveInstanceState()`方法,当用户切换回该Activity时,存储他们的输入数据。当启动第二个Activity时,通过`Intent`传递数据:
```java
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("NAME", nameEditText.getText().toString());
intent.putExtra("HEIGHT", heightTextView.getText().toString());
intent.putExtra("SEX", maleRadioButton.isChecked() ? "MALE" : "FEMALE");
startActivity(intent);
```
3. **接收并展示数据**:
在`SecondActivity`中,通过`getIntent()`获取数据并在`onCreate()`中解析:
```java
String name = getIntent().getStringExtra("NAME");
String height = getIntent().getStringExtra("HEIGHT");
String sex = getIntent().getStringExtra("SEX");
TextView displayData = findViewById(R.id.display_data);
displayData.setText("姓名: " + name + "\n身高: " + height + "\n性别: " + sex);
```
4. **双向数据流**:
要允许用户从第二个Activity返回数据,可以在`SecondActivity`中添加一个按钮点击事件,使用`setResult()`和`finish()`方法。在`FirstActivity`中接收返回的结果:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 获取并处理返回的数据
}
}
```
5. **在`SecondActivity`中发送数据**:
添加一个按钮点击事件,比如Button Click,然后结束当前Activity并设置结果数据:
```java
Button backToFirstActivityButton = findViewById(R.id.back_to_first_activity_button);
backToFirstActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResult(RESULT_OK, new Intent().putExtra("DATA_TO_RETURN", /* 这里是你想要返回的数据 */));
finish();
}
});
```
阅读全文