首先建立相应视图
这是一个XML布局文件,用于创建登录界面。下面是每个组件的详细注释:
ConstraintLayout:布局的根容器,用于在界面中定位和约束视图。
TextView:显示“登录界面”文本,位于界面顶部。
Button(id为button):登录按钮,点击后将触发登录操作。
Button(id为button2):退出按钮,点击后将关闭当前活动。
EditText(id为editTextTextPersonName2):用户名输入框,用户可以在此输入用户名。
EditText(id为editTextTextPersonName3):密码输入框,用户可以在此输入密码。
RadioGroup(id为radioGroup2):单选按钮组,用于容纳两个RadioButton。注意:在您提供的代码中,这些单选按钮没有实际用途。
a. RadioButton(id为radioButton2):显示“保存密码”的单选按钮。
b. RadioButton(id为radioButton):显示“RadioButton”的单选按钮,此处应该有一个描述性的文本,如“记住我”。
CheckBox(id为checkBox):显示“自动登录”的复选框。注意:在您提供的代码中,此复选框没有实际用途。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".CalculateActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录界面"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.473"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.036" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="72dp"
android:layout_marginBottom="108dp"
android:onClick="login"
android:text="登入"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radioGroup2"
app:layout_constraintVertical_bias="0.633" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="退出"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintTop_toTopOf="@+id/button"
app:layout_constraintVertical_bias="0.0" />
<EditText
android:id="@+id/editTextTextPersonName2"
android:layout_width="221dp"
android:layout_height="69dp"
android:ems="10"
android:inputType="textPersonName"
android:text="zhanghao"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.417"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.09" />
<EditText
android:id="@+id/editTextTextPersonName3"
android:layout_width="215dp"
android:layout_height="81dp"
android:ems="10"
android:inputType="textPersonName"
android:text="mima"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.408"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2"
app:layout_constraintVertical_bias="0.035" />
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="131dp"
android:layout_height="165dp"
app:layout_constraintStart_toStartOf="@+id/checkBox"
app:layout_constraintTop_toBottomOf="@+id/checkBox">
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="113dp"
android:layout_height="72dp"
android:layout_marginBottom="32dp"
android:text="保存密码" />
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="61dp"
android:text="RadioButton" />
</RadioGroup>
<CheckBox
android:id="@+id/checkBox"
android:layout_width="106dp"
android:layout_height="72dp"
android:layout_marginTop="16dp"
android:text="自动登录"
app:layout_constraintStart_toStartOf="@+id/editTextTextPersonName3"
app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName3" />
</androidx.constraintlayout.widget.ConstraintLayout>
编辑相应的Java文件
这是一个简单的登录界面应用程序的MainActivity类,其中包含一些基本组件,如TextView,EditText和Button。以下是关于代码的详细注释:
声明并初始化变量:
textViewTitle: TextView,显示"登录界面"标题。
editTextUsername: EditText,用户名输入框。
editTextPassword: EditText,密码输入框。
buttonLogin: Button,登录按钮。
buttonExit: Button,退出按钮。
在onCreate方法中:
a. 使用setContentView设置布局文件(activity_main4.xml)。
b. 使用findViewById获取布局文件中的组件并将其与相应的变量关联。
c. 定义一个字符串变量user和一个字符串变量password作为登录凭据。在此示例中,我们使用固定的用户名和密码(均为"123")。
为登录按钮设置点击监听器:
a. 获取用户输入的用户名和密码。
b. 检查用户名和密码是否为空,如果为空,则显示一个提示消息(Toast)。
c. 检查输入的用户名和密码是否与预定义的用户名和密码相匹配,如果匹配,则启动新的活动(CalculateActivity),并显示一个登录成功的提示消息。
d. 如果输入的用户名和密码与预定义的用户名和密码不匹配,则显示一个账号或密码错误的提示消息。
为退出按钮设置点击监听器:
a. 调用finish()方法以关闭当前活动(MainActivity)。
这个简单的应用程序允许用户输入用户名和密码,然后点击登录按钮。如果输入的用户名和密码与预定义的用户名和密码相匹配,将进入新的活动(CalculateActivity)。如果用户点击退出按钮,应用程序将关闭。
// 导入所需的包
package com.example.appjisuanqi;
// 导入所需的类
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
// 定义名为MainActivity的类,继承自AppCompatActivity
public class MainActivity extends AppCompatActivity {
// 声明组件变量
private TextView textViewTitle;
private EditText editTextUsername;
private EditText editTextPassword;
private Button buttonLogin;
private Button buttonExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4); // 设置布局文件
// 通过ID获取组件并关联变量
textViewTitle = findViewById(R.id.textView);
editTextUsername = findViewById(R.id.editTextTextPersonName2);
editTextPassword = findViewById(R.id.editTextTextPersonName3);
buttonLogin = findViewById(R.id.button);
buttonExit = findViewById(R.id.button2);
// 定义用户名和密码
String user = "123";
String password = "123";
// 设置登录按钮点击监听器
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取输入的用户名和密码
String username = editTextUsername.getText().toString();
String inputPassword = editTextPassword.getText().toString();
// 检查用户名和密码是否为空
if (username.isEmpty() || inputPassword.isEmpty()) {
Toast.makeText(MainActivity.this, "账号或密码不能为空", Toast.LENGTH_SHORT).show();
}
// 检查输入的用户名和密码是否与预定义的用户名和密码相匹配
else if (username.equals(user) && inputPassword.equals(password)) {
Intent intent = new Intent(MainActivity.this, CalculateActivity.class);
startActivity(intent);
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
// 如果用户名和密码不匹配,显示错误消息
else {
Toast.makeText(MainActivity.this, "账号或密码错误", Toast.LENGTH_SHORT).show();
}
}
});
// 设置退出按钮点击监听器
buttonExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish(); // 关闭当前Activity
}
});
}
}
接下来建立计算器界面
<?xml version="1.0" encoding="utf-8"?>
<!-- XML文件声明,指定版本和编码 -->
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<!-- 声明XML命名空间 -->
xmlns:tools="http://schemas.android.com/tools"
<!-- 声明工具命名空间 -->
android:id="@+id/activity_main"
<!-- 为GridLayout设置ID -->
android:layout_width="wrap_content"
<!-- GridLayout宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- GridLayout高度设置为包裹内容 -->
android:paddingBottom="@dimen/activity_vertical_margin"
<!-- GridLayout底部内边距 -->
android:paddingLeft="@dimen/activity_horizontal_margin"
<!-- GridLayout左侧内边距 -->
android:paddingRight="@dimen/activity_horizontal_margin"
<!-- GridLayout右侧内边距 -->
android:paddingTop="@dimen/activity_vertical_margin"
<!-- GridLayout顶部内边距 -->
android:columnCount="4"
<!-- GridLayout列数设置为4 -->
android:rowCount="7"
<!-- GridLayout行数设置为7 -->
tools:context="com.example.appjisuanqi.CalculateActivity">
<!-- 设置与此布局关联的Activity -->
<!-- 显示计算结果的EditText组件 -->
<EditText
android:id="@+id/et"
<!-- 为EditText设置ID -->
android:layout_width="match_parent"
<!-- EditText宽度设置为匹配父布局 -->
android:layout_height="wrap_content"
<!-- EditText高度设置为包裹内容 -->
android:layout_columnSpan="4"
<!-- EditText跨越4列 -->
android:layout_columnWeight="1"
<!-- EditText列权重设置为1 -->
android:ems="10"
<!-- EditText设置为10个字符宽度 -->
android:gravity="end"
<!-- EditText内容显示在右侧 -->
android:hint="@string/app_name"
<!-- EditText提示文本设置为应用名 -->
android:text=""
<!-- EditText的默认文本为空 -->
android:textSize="40dp" />
<!-- EditText的文本大小设置为40dp -->
<!-- 数字按钮和操作按钮 -->
<!-- 按钮7 -->
<Button
android:id="@+id/btn7"
<!-- 为按钮7设置ID -->
android:layout_width="wrap_content"
<!-- 按钮7宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮7高度设置为包裹内容 -->
android:text="7"
<!-- 按钮7显示文本为"7" -->
android:textSize="@dimen/tsize"
<!-- 按钮7文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮7外边距设置为5dp -->
<!-- 按钮8 -->
<Button
android:id="@+id/btn8"
<!-- 为按钮8设置ID -->
android:layout_width="wrap_content"
<!-- 按钮8宽度设置为包裹内容 -->
android:layout_height="wrap_content"
android:text="8"
<!-- 按钮8显示文本为"8" -->
android:textSize="@dimen/tsize"
<!-- 按钮8文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮8外边距设置为5dp -->
<!-- 按钮9 -->
<Button
android:id="@+id/btn9"
<!-- 为按钮9设置ID -->
android:layout_width="wrap_content"
<!-- 按钮9宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮9高度设置为包裹内容 -->
android:text="9"
<!-- 按钮9显示文本为"9" -->
android:textSize="@dimen/tsize"
<!-- 按钮9文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮9外边距设置为5dp -->
<!-- 清除按钮 -->
<Button
android:id="@+id/btnc"
<!-- 为清除按钮设置ID -->
android:layout_width="wrap_content"
<!-- 清除按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 清除按钮高度设置为包裹内容 -->
android:text="C"
<!-- 清除按钮显示文本为"C" -->
android:textSize="@dimen/tsize"
<!-- 清除按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 清除按钮外边距设置为5dp -->
<!-- 按钮4 -->
<Button
android:id="@+id/btn4"
<!-- 为按钮4设置ID -->
android:layout_width="wrap_content"
<!-- 按钮4宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮4高度设置为包裹内容 -->
android:text="4"
<!-- 按钮4显示文本为"4" -->
android:textSize="@dimen/tsize"
<!-- 按钮4文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮4外边距设置为5dp -->
<!-- 按钮5 -->
<Button
android:id="@+id/btn5"
<!-- 为按钮5设置ID -->
android:layout_width="wrap_content"
<!-- 按钮5宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮5高度设置为包裹内容 -->
android:text="5"
<!-- 按钮5显示文本为"5" -->
android:textSize="@dimen/tsize"
<!-- 按钮5文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮5外边距设置为5dp -->
<!-- 按钮6 -->
<Button
android:id="@+id/btn6"
<!-- 为按钮6设置ID -->
android:layout_width="wrap_content"
<!-- 按钮6宽度设置为包裹内容 -->
android:layout_height="wrap_content
<!-- 按钮6高度设置为包裹内容 -->
android:text="6"
<!-- 按钮6显示文本为"6" -->
android:textSize="@dimen/tsize"
<!-- 按钮6文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮6外边距设置为5dp -->
<!-- 除法按钮 -->
<Button
android:id="@+id/btndiv"
<!-- 为除法按钮设置ID -->
android:layout_width="wrap_content"
<!-- 除法按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 除法按钮高度设置为包裹内容 -->
android:text="/"
<!-- 除法按钮显示文本为"/" -->
android:textSize="@dimen/tsize"
<!-- 除法按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 除法按钮外边距设置为5dp -->
<!-- 按钮1 -->
<Button
android:id="@+id/btn1"
<!-- 为按钮1设置ID -->
android:layout_width="wrap_content"
<!-- 按钮1宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮1高度设置为包裹内容 -->
android:text="1"
<!-- 按钮1显示文本为"1" -->
android:textSize="@dimen/tsize"
<!-- 按钮1文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮1外边距设置为5dp -->
<!-- 按钮2 -->
<Button
android:id="@+id/btn2"
<!-- 为按钮2设置ID -->
android:layout_width="wrap_content"
<!-- 按钮2宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮2高度设置为包裹内容 -->
android:text="2"
<!-- 按钮2显示文本为"2" -->
android:textSize="@dimen/tsize"
<!-- 按钮2文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮2外边距设置为5dp -->
<!-- 按钮3 -->
<Button
android:id="@+id/btn3"
<!-- 为按钮3设置ID -->
android:layout_width="wrap_content"
<!-- 按钮3宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮3高度设置为包裹内容 -->
android:text="3"
<!-- 按钮3显示文本为"3" -->
android:textSize="@dimen/tsize"
<!-- 按钮3文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 按钮3外边距设置为5dp -->
<!-- 乘法按钮 -->
<Button
android:id="@+id/btnmul"
<!-- 为乘法按钮设置ID -->
android:layout_width="wrap_content"
<!-- 乘法按钮宽度设置为包裹内容 -->
android:layout_height
<!-- 乘法按钮高度设置为包裹内容 -->
android:text="*"
<!-- 乘法按钮显示文本为"*" -->
android:textSize="@dimen/tsize"
<!-- 乘法按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 乘法按钮外边距设置为5dp -->
<!-- 按钮0 -->
<Button
android:id="@+id/btn0"
<!-- 为按钮0设置ID -->
android:layout_width="wrap_content"
<!-- 按钮0宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 按钮0高度设置为包裹内容 -->
android:text="0"
<!-- 按钮0显示文本为"0" -->
android:textSize="@dimen/tsize"
<!-- 按钮0文本大小引用资源文件 -->
android:layout_columnSpan="2"
<!-- 按钮0跨越两列 -->
android:layout_gravity="fill_horizontal"
<!-- 按钮0水平填充 -->
android:layout_margin="5dp" />
<!-- 按钮0外边距设置为5dp -->
<!-- 小数点按钮 -->
<Button
android:id="@+id/btndot"
<!-- 为小数点按钮设置ID -->
android:layout_width="wrap_content"
<!-- 小数点按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 小数点按钮高度设置为包裹内容 -->
android:text="."
<!-- 小数点按钮显示文本为"." -->
android:textSize="@dimen/tsize"
<!-- 小数点按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 小数点按钮外边距设置为5dp -->
<!-- 减法按钮 -->
<Button
android:id="@+id/btnsub"
<!-- 为减法按钮设置ID -->
android:layout_width="wrap_content"
<!-- 减法按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 减法按钮高度设置为包裹内容 -->
android:text="-"
<!-- 减法按钮显示文本为"-" -->
android:textSize="@dimen/tsize"
<!-- 减法按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 减法按钮外边距设置为5dp -->
<!-- 等于按钮 -->
<Button
android:id="@+id/btnequ"
<!-- 为等于按钮设置ID -->
android:text="="
<!-- 等于按钮显示文本为"=" -->
android:layout_width="wrap_content"
<!-- 等于按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 等于按钮高度设置为包裹内容 -->
android:layout_columnSpan="3"
<!-- 等于按钮跨越三列 -->
android:textSize="@dimen/tsize"
<!-- 等于按钮文本大小引用资源文件 -->
android:layout_gravity="fill_horizontal"
<!-- 等于按钮水平填充 -->
android:layout_margin="5dp" />
<!-- 等于按钮外边距设置为5dp -->
<!-- 加法按钮 -->
<Button
android:id="@+id/btnadd"
<!-- 为加法按钮设置ID -->
android:layout_width="wrap_content"
<!-- 加法按钮宽度设置为包裹内容 -->
android:layout_height="wrap_content"
<!-- 加法按钮高度设置为包裹内容 -->
android:text="+"
<!-- 加法按钮显示文本为"+" -->
android:textSize="@dimen/tsize"
<!-- 加法按钮文本大小引用资源文件 -->
android:layout_margin="5dp" />
<!-- 加法按钮外边距设置为5dp -->
</GridLayout>
<!-- GridLayout结束标签,这里结束整个网格布局 -->
这个XML代码片段是一个简单的计算器布局,包含一个输入框(EditText)和一系列按钮。输入框用于显示输入的数字和计算结果,按钮用于输入数字和执行基本的四则运算操作。网格布局被设置为4列和7行,用于容纳所有控件。每个控件的外边距都设置为5dp,以便在按钮之间留有空隙。按钮的文本大小均引用自资源文件。
编辑相应的Java文件
// 声明应用的包名
package com.example.appjisuanqi;
// 导入所需的类
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
// 定义一个名为CalculateActivity的类,该类继承自AppCompatActivity
public class CalculateActivity extends AppCompatActivity {
// 声明所需的组件变量
private EditText et;
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
private Button btn6;
private Button btn7;
private Button btn8;
private Button btn9;
private Button btndot, btnadd, btnsub, btnmul, btndiv, btnc, btnequ;
// 声明计算器需要的变量
private double num1, num2;
private char operation;
private boolean isOperationSelected;
// 在应用创建时执行的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
// 将布局文件中的组件与变量绑定
et = findViewById(R.id.et);
Button btn0 = findViewById(R.id.btn0);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
btn7 = findViewById(R.id.btn7);
btn8 = findViewById(R.id.btn8);
btn9 = findViewById(R.id.btn9);
btndot = findViewById(R.id.btndot);
btnadd = findViewById(R.id.btnadd);
btnsub = findViewById(R.id.btnsub);
btnmul = findViewById(R.id.btnmul);
btndiv = findViewById(R.id.btndiv);
btnc = findViewById(R.id.btnc);
btnequ = findViewById(R.id.btnequ);
// 为各个按钮设置点击事件监听器
// 数字按钮的点击事件
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("0");
}
});
// ...其他数字按钮的点击事件省略,类似于btn0
// 小数点按钮的点击事件
btndot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(".");
}
});
// 运算符按钮的点击事件
btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOperation('+');
}
});
// ...其他运算符按钮的点击事件省略,类似于btnadd
// 清除按钮的点击事件
btnc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et.setText("");
num1 = 0;
num2 = 0;
isOperationSelected = false;
}
});
// 等于按钮的点击事件
btnequ.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isOperationSelected) {
Toast.makeText(CalculateActivity.this, "请选择操作符", Toast.LENGTH_SHORT).show();
return;
// 如果已选择操作符,尝试执行计算
try {
num2 = Double.parseDouble(et.getText().toString());
double result = performOperation();
et.setText(String.valueOf(result));
} catch (NumberFormatException e) {
Toast.makeText(CalculateActivity.this, "请输入数字", Toast.LENGTH_SHORT).show();
}
isOperationSelected = false;
}
});
}
// 定义一个方法,用于将数字或小数点添加到显示框中
private void appendNumber(String num) {
String currentText = et.getText().toString();
et.setText(currentText + num);
}
// 定义一个方法,用于设置操作符
private void setOperation(char op) {
if (!isOperationSelected) {
try {
num1 = Double.parseDouble(et.getText().toString());
operation = op;
et.setText("");
isOperationSelected = true;
} catch (NumberFormatException e) {
Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "操作符已选择", Toast.LENGTH_SHORT).show();
}
}
// 定义一个方法,用于执行运算
private double performOperation() {
double result = 0;
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
Toast.makeText(this, "除数不能为零", Toast.LENGTH_SHORT).show();
}
break;
}
return result;
}
}
这一部分代码完成了计算器的主要功能,包括按钮的点击事件监听器设置以及各个运算符的执行逻辑。