Android edittext.getText()的返回值类型

本文解释了在Android开发中EditText的getText()方法返回值类型及其转换为String的过程,并探讨了CharSequence与String的区别,以及为何某些方法使用CharSequence作为参数类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发的时候会遇到将edittext.getText()赋值给String类型出错了

这时加上.toString()就会好用

(1)那么edittext.getText()的返回值类型是什么呢?

它返回的是一个CharSequence 的接口 

 正好toString()就是CharSequence一个方法

(2)CharSequence和String的区别是什么?

CharSequence 是 char 值的一个可读序列。此接口对许多不同种类的 char 序列提供统一的只读访问
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例来实现。 
(3)java中,有的方法的参数类型是charsequence,这时候带入的参数实际上是字符串
CharSequence是String实现的一个接口,相当简单,就是要求是一串字符。所以每个参数类型是CharSequence的方法,都可以实际代入String对象。
为什么这些方法不干脆定义String作为参数类型?因为还有其他的CharSequence类型的类,比如StringBuffer和StringBuilder这两个很重要的类。String对象是不可变的,这两个可变,所以我们在构造字符串的过程中往往要用到StringBuffer和StringBuilder。如果那些方法定义String作为参数类型,那么就没法对它们用那些方法,先得转化成String才能用。但StringBuffer和StringBuilder转换为String再转换过来很化时间的,用它们而不是直接用String的“加法”来构造新String本来就是为了省时间,所以如果用String作为参数类型就杯具了。



package com.example.coursemanager.activities; import com.example.coursemanager.R; import com.example.coursemanager.models.Course; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.example.coursemanager.utils.CourseDbHelper; import com.google.android.material.textfield.TextInputEditText; public class AddCourseActivity extends AppCompatActivity { private EditText nameEdit, teacherEdit, roomEdit; private AutoCompleteTextView daySpinner; private TextInputEditText startTimeEdit, endTimeEdit; private CourseDbHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_course); // 初始化数据库帮助类 dbHelper = new CourseDbHelper(this); // 绑定视图 initViews(); // 初始化Spinner数据 initSpinners(); // 设置保存按钮点击事件 findViewById(R.id.save_button).setOnClickListener(v -> saveCourse()); } private void initViews() { nameEdit = findViewById(R.id.name_edit); teacherEdit = findViewById(R.id.teacher_edit); roomEdit = findViewById(R.id.room_edit); daySpinner = findViewById(R.id.day_spinner); startTimeEdit = findViewById(R.id.start_time_edit); endTimeEdit = findViewById(R.id.end_time_edit); } private void initSpinners() { // 星期选择器 (周一至周日) ArrayAdapter<String> dayAdapter = new ArrayAdapter<>( this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.week_days)); dayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); daySpinner.setAdapter(dayAdapter); } private void saveCourse() { String name = nameEdit.getText().toString().trim(); if (name.isEmpty()) { showToast("请输入课程名称"); return; } // 修正1:改用文本匹配方式获取星期位置 int day = getDayPosition(daySpinner.getText().toString()) + 1; // 处理时间输入 String startTime = startTimeEdit.getText().toString(); String endTime = endTimeEdit.getText().toString(); if (startTime.isEmpty() || endTime.isEmpty()) { showToast("请输入完整时间"); return; } int startTimeInMinutes = parseTimeToMinutes(startTime); int endTimeInMinutes = parseTimeToMinutes(endTime); if (startTimeInMinutes >= endTimeInMinutes) { showToast("结束时间必须晚于开始时间"); return; } Course course = new Course( name, teacherEdit.getText().toString().trim(), roomEdit.getText().toString().trim(), day, startTimeInMinutes, endTimeInMinutes ); long id = dbHelper.addCourse(course); if (id != -1) { showToast("课程添加成功"); setResult(RESULT_OK); finish(); } else { showToast("添加失败,请重试"); } } // 将HH:mm格式时间转换为分钟 private int parseTimeToMinutes(String time) { String[] parts = time.split(":"); int hour = Integer.parseInt(parts[0]); int minute = Integer.parseInt(parts[1]); return hour * 60 + minute; } // 根据文本内容获取在数组中的位置 private int getDayPosition(String dayText) { String[] daysArray = getResources().getStringArray(R.array.week_days); for (int i = 0; i < daysArray.length; i++) { if (daysArray[i].equals(dayText)) { return i; } } return 0; // 默认返回0(星期一)如果未匹配 } private void showToast(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { dbHelper.close(); super.onDestroy(); } }这是我原代码,告诉我怎么修改
最新发布
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值