修复一些Kotlin语法

  • 本文关键字:Kotlin 语法 kotlin
  • 更新时间 :
  • 英文 :


我刚刚完成了使用Java构建了一个简单的Android音乐应用程序,然后使用Android Studio的Kotlin插件将Java文件转换为Kotlin。

在MainActivity.kt

中存在一些错误
private fun display() {
    val mySongs = findSong(Environment.getExternalStorageDirectory())
    items = arrayOf(mySongs.size.toString())

    for (i in mySongs.indices) {
        items[i] = mySongs[i].name.toString().replace(".mp3", "").replace(".wav", "")
    }
    val adp = ArrayAdapter(this, android.R.layout.simple_list_item_1, items!!)
    listView!!.adapter = adp
    listView!!.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, position, l -> startActivity(Intent(applicationContext, PlayerActivity::class.java).putExtra("pos", position).putExtra("songs", mySongs)) }
}

此行:items[i] = mySongs[i].name.toString().replace(".mp3","").replace(".wav", "")

显示错误:智能铸造到'array'是一个可变的属性,此时可能已经更改了。

和playerActivity.kt

val i = intent
val b = i.extras
mySongs = b.getParcelableArrayList<Parcelable>(mySongs.toString())
position = b.getInt("pos", 0)
val u = Uri.parse(mySongs!![position].toString())
mediaPlayer = MediaPlayer.create(applicationContext, u)

b.getParcelableArrayList<Parcelable>(mySongs.toString())有一个问题,说类型不匹配。

有人可以帮助我解决这个问题吗?谢谢

此行

items = arrayOf(mySongs.size.toString()) 

创建一个包含我歌曲大小的字符串的1个元素的数组。例如:[" 23"]

您可以使用此方法:arrayOfNulls(mySongs.size)

对于另一个问题:

mySongs = b.getParcelableArrayList<Parcelable>(mySongs.toString())

应返回与(我认为它是相同的代码与主要活动相同的代码

val mySongs = findSong(Environment.getExternalStorageDirectory())

Mysongs的类型与Findsong的结果相同。

您也应该使用var而不是val,因为val是不变的

最新更新