Kotlin开发Android时TextView仅显示星期数字不显示名称如何解决
问题原因
- 你定义的
dayOfWeek()函数仅将转换后的星期名称输出到控制台,没有设置返回值,且代码中没有调用过这个函数 - 给TextView赋值时直接使用了全局声明的数字类型
day变量的转字符串结果,所以只会显示1-7的数字
修复代码
修改后的逻辑如下,你可以根据需要选择显示中文或者英文星期名:
import android.widget.TextView import java.util.Calendar // 无用的全局day变量可以直接删除 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 转换为中文星期名 fun getDayOfWeek(): String { val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK) return when (day) { Calendar.SUNDAY -> "星期日" // 用系统常量比直接写数字可读性更高,也可以保留原来的1-7数字写法 Calendar.MONDAY -> "星期一" Calendar.TUESDAY -> "星期二" Calendar.WEDNESDAY -> "星期三" Calendar.THURSDAY -> "星期四" Calendar.FRIDAY -> "星期五" Calendar.SATURDAY -> "星期六" else -> "时间异常" } } val tag = findViewById<TextView>(R.id.Tag) // 调用转换函数获取星期名称后赋值 tag.text = getDayOfWeek() }
如果不需要复用转换逻辑,可以直接简化写法:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val tag = findViewById<TextView>(R.id.Tag) val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK) // 要显示英文直接替换when分支里的字符串即可 tag.text = when (day) { 1 -> "Sunday" 2 -> "Monday" 3 -> "Tuesday" 4 -> "Wednesday" 5 -> "Thursday" 6 -> "Friday" 7 -> "Saturday" else -> "Time has stopped" } }
内容的提问来源于stack exchange,提问作者M H
相关产品推荐
相关产品推荐

