如何在超类型列表中添加两个 类,PhoneStateListener 和 AppCompatActivity
How to add two classes in supertype list, PhoneStateListener and AppCompatActivity
是否可以将 PhoneStateListener()
添加到 AppCompatActivity()
?这个想法是创建一个类似于 class CallListener : AppCompatActivity(), PhoneStateListener() {}
的 Phone 调用监听器 class。此错误与“只有一个 class 可能出现在超类型列表中”。我需要 AppCompatActivity,因为我需要使用 AudioManager,而我知道如何做到这一点的唯一方法是使用 getSystemService()
,如果没有 AppCompatActivity,这是不可用的。我还需要 PhoneStateListener 来了解出站调用处于哪个状态。在 Kotlin 中设置它的正确方法是什么?
您可以自定义嵌套 class 或扩展 PhoneStateListener
.
的具体 class
class CallListener:PhoneStateListener(){
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
super.onCellInfoChanged(cellInfo)
}
}
如果您需要访问其中的上下文,您可能需要将其传递给构造函数。但是如果你把它设为 inner class CallListener
你可以直接使用 Activity 的参考。
确保删除 onStop
或 onDestroy
中 PhoneStateListener
的所有资源。
内部 class 的排列看起来有点像下面 .
class MyActivity:AppCompatActivity(){
lateinit var telephonyManager :TelephonyManager
lateinit var callListener: CallListener
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
callListener=CallListener()
telephonyManager.listen(callListener),
}
inner class CallListener:PhoneStateListener(){
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
super.onCellInfoChanged(cellInfo)
}
}
}
是否可以将 PhoneStateListener()
添加到 AppCompatActivity()
?这个想法是创建一个类似于 class CallListener : AppCompatActivity(), PhoneStateListener() {}
的 Phone 调用监听器 class。此错误与“只有一个 class 可能出现在超类型列表中”。我需要 AppCompatActivity,因为我需要使用 AudioManager,而我知道如何做到这一点的唯一方法是使用 getSystemService()
,如果没有 AppCompatActivity,这是不可用的。我还需要 PhoneStateListener 来了解出站调用处于哪个状态。在 Kotlin 中设置它的正确方法是什么?
您可以自定义嵌套 class 或扩展 PhoneStateListener
.
class CallListener:PhoneStateListener(){
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
super.onCellInfoChanged(cellInfo)
}
}
如果您需要访问其中的上下文,您可能需要将其传递给构造函数。但是如果你把它设为 inner class CallListener
你可以直接使用 Activity 的参考。
确保删除 onStop
或 onDestroy
中 PhoneStateListener
的所有资源。
内部 class 的排列看起来有点像下面 .
class MyActivity:AppCompatActivity(){
lateinit var telephonyManager :TelephonyManager
lateinit var callListener: CallListener
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
callListener=CallListener()
telephonyManager.listen(callListener),
}
inner class CallListener:PhoneStateListener(){
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
super.onCellInfoChanged(cellInfo)
}
}
}