Android-эквивалент NSNotificationCenter

Swift 4 версия ответа Люка Чейза

let numberOfGlyphs = textView.layoutManager.numberOfGlyphs
var index = 0, numberOfLines = 0
var lineRange = NSRange(location: NSNotFound, length: 0)

while index < numberOfGlyphs {
  textView.layoutManager.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
  index = NSMaxRange(lineRange)
  numberOfLines += 1
}

92
задан Pang 27 January 2013 в 10:09
поделиться

1 ответ

Kotlin: вот версия @Shiki в Kotlin, но как сделать, это во фрагменте с немного осуществляет рефакторинг.

  1. Регистр наблюдатель во Фрагменте.

уведомление о Сообщении Fragment.kt

class MyFragment : Fragment() {

    private var mContext: Context? = null

    private val mMessageReceiver = object: BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            //Do something here after you get the notification
            myViewModel.reloadData()
        }
    }

    override fun onAttach(context: Context) {
        super.onAttach(context)

        mContext = context
    }

    override fun onDestroy() {
        LocalBroadcastManager.getInstance(mContext!!).unregisterReceiver(mMessageReceiver)
        super.onDestroy()
    }

    private fun registerCallSheetUpdate() {
        LocalBroadcastManager.getInstance(mContext!!).registerReceiver(mMessageReceiver, IntentFilter(Constant.NOTIFICATION_SOMETHING_HAPPEN))
    }

}
  1. где угодно. Только Вам нужен контекст.

    LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(Constant.NOTIFICATION_SOMETHING_HAPPEN))```
    

PS:

  1. можно добавить, что Constant.kt как я для хорошо организует уведомления. Constant.kt
object Constant {
    const val NOTIFICATION_CALL_SHEET_LIST_UPDATED_LOCALLY = "notification_something_happened_locally"
}
  1. Для контекста во фрагменте, можно использовать activity (somethings null) или conext как то, что я использовал.
0
ответ дан 24 November 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: