Android Kotlin实现从Assets文件随机选行作为Dialog内容
解决方案
- 实现读取Assets文件并随机返回一行的方法
- 在Dialog创建时调用该方法获取随机语句
完整代码如下:
class JokeFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return activity?.let { context -> val sentence = getRandomSentence(context) val builder = AlertDialog.Builder(context) builder.setMessage(sentence) .setNegativeButton(R.string.cancel) { _, _ -> } builder.create() } ?: throw IllegalStateException("Activity cannot be null") } private fun getRandomSentence(context: Context): String { return try { // 替换为你Assets文件夹内的目标文件名,比如"jokes.txt" val inputStream = context.assets.open("jokes.txt") val lines = inputStream.bufferedReader().readLines() // 过滤空行后随机选取,无有效内容时返回默认文本 lines.filter { it.isNotBlank() }.randomOrNull() ?: "暂无内容" } catch (e: Exception) { // 读取失败时的默认提示 "加载失败" } } }
注意事项
- 确保目标文件存在于
src/main/assets目录下,且文件名与代码中填写的完全一致 - 若文件内有较多空行,可保留
filter { it.isNotBlank() }来过滤无效行 - 异常处理的默认提示文本可根据需求自行修改
内容的提问来源于stack exchange,提问作者nope
相关产品推荐
相关产品推荐

