本次作业要求实现一个计算器应用的基础框架。以下是布局文件的核心代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/inputText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入计算内容"
android:textSize="24sp"/>
<Button
android:id="@+id/calculateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="计算"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/resultText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="结果将显示在这里"
android:textSize="24sp"
android:layout_marginTop="20dp"/>
</LinearLayout>
这个布局包含一个输入框、一个按钮和一个结果显示区域,使用线性布局垂直排列所有元素。
接下来需要编写代码处理按钮点击事件并实现计算逻辑:
// MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 获取UI组件引用
val inputText = findViewById<EditText>(R.id.inputText)
val calculateButton = findViewById<Button>(R.id.calculateButton)
val resultText = findViewById<TextView>(R.id.resultText)
// 设置按钮点击事件
calculateButton.setOnClickListener {
val input = inputText.text.toString()
if (input.isNotEmpty()) {
try {
// 简单计算逻辑
val result = evaluateExpression(input)
resultText.text = "计算结果: $result"
} catch (e: Exception) {
resultText.text = "计算错误: ${e.message}"
}
} else {
resultText.text = "请输入计算内容"
}
}
}
// 简单表达式计算函数
private fun evaluateExpression(expression: String): Double {
// 实际项目中应使用更健壮的表达式解析库
return expression.toDoubleOrNull() ?: 0.0
}
}
这个代码实现了基本的用户交互流程:获取输入、计算结果、显示输出。