怎么 新建一个Android项目,在该项目中实现以下功能:在第一二个Activity;在第二个 本控件输入姓名与身高,使用单选按钮选择性别,将结果传递到第居返回到第一个Activity Activity中显示第一个Activity传输的数居,并且单击按钮后,将数 中
时间: 2024-10-21 08:09:58 浏览: 25
Android项目结构说明-03 第一个Android程序
在 Android 中创建一个新的项目并实现在不同 Activity 间传递数据的功能,你需要按照以下步骤操作:
1. **新建项目**:
- 打开 Android Studio,选择 "Start a new Android Studio project"(或 "Create New Project")。
- 选择 "Empty Activity",点击 "Next"。
- 填写项目的基本信息,如应用名称、包名、保存位置等。
- 确保勾选 "Include Kotlin" 或者 "Include Java",取决于你的偏好。
- 点击 "Finish" 创建项目。
2. **添加 UI 控件**:
- 在 `activity_second.xml` 文件中为姓名输入框(EditText)、身高输入框(EditText)、单选按钮(RadioButton)以及提交按钮(Button)添加布局。
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
... (其他布局属性)
android:orientation="vertical">
...
<EditText android:id="@+id/et_name" />
<EditText android:id="@+id/et_height" />
<RadioGroup>
<RadioButton android:id="@+id/rb_male" android:text="Male" />
<RadioButton android:id="@+id/rb_female" android:text="Female" />
</RadioGroup>
<Button android:id="@+id/btn_submit" android:text="Submit" />
</LinearLayout>
```
3. **处理界面事件**:
- 在 `SecondActivity.kt`(如果用 Kotlin)或 `SecondActivity.java`(如果用 Java)中,设置按钮点击监听器来获取输入值和性别选择。
```java
// Java 示例
Button submitBtn = findViewById(R.id.btn_submit);
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = etName.getText().toString();
int height = Integer.parseInt(etHeight.getText().toString());
int gender = rbMale.isChecked() ? 0 : 1; // 0 for male, 1 for female
finishAffinity(); // 返回到第一个活动
}
});
// Kotlin 示例
submitBtn.setOnClickListener {
val name = etName.text.toString()
val height = etHeight.text.toString().toInt()
var gender = if (rbMale.isChecked()) 0 else 1
finishAffinity()
}
```
4. **传递数据**:
- 在 `MainActivity.kt` 或 `MainActivity.java` 中,重写 `onNewIntent()` 方法接收从 `SecondActivity` 传递的数据。
```java
// Java 示例
protected override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
intent?.let { data ->
val extras = data.getSerializableExtra("data")
// 更新UI显示传递过来的数据
}
}
// Kotlin 示例
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val extras = intent?.getSerializableExtra("data") ?: return
// 更新UI显示传递过来的数据
}
```
5. **在 `SecondActivity` 传递数据**:
- 使用 `Intent` 和 `putExtra()` 方法将数据封装并传递回第一个 Activity。
```java
// Java 示例
Intent dataIntent = new Intent(this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putInt("height", height);
bundle.putBoolean("gender", gender); // 注意这里的 gender 是 boolean 类型
dataIntent.putExtra("data", bundle);
startActivity(dataIntent);
// Kotlin 示例
val dataIntent = Intent(this, MainActivity::class.java)
val bundle = Bundle().apply {
putString("name", name)
putInt("height", height)
putBoolean("gender", gender)
}
dataIntent.putExtra("data", bundle)
startActivity(dataIntent)
```
6. **在 `MainActivity` 显示数据**:
- 获取传递来的数据并在适当的地方更新 UI 展示。
```java
// Java 示例
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val extras = intent?.getExtras() as Bundle?
if (extras != null) {
val name = extras.getString("name")
val height = extras.getInt("height")
val genderStr = if (extras.getBoolean("gender")) "Male" else "Female"
// 更新 UI 显示姓名、身高和性别
}
}
// Kotlin 示例
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val extras = intent?.extras
if (extras != null) {
val name = extras.getString("name")
val height = extras.getInt("height")
val genderStr = if (extras.getBoolean("gender")) "Male" else "Female"
// 更新 UI 显示姓名、身高和性别
}
}
```
阅读全文