Kotlin получает представления null во фрагменте при доступе к представлению из Activity - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в Kotlin, я не знаю, что я делаю неправильно.Может ли кто-нибудь мне помочь?

Код фрагмента:

fun startViewAnimations() {
 rippleBack?.startRippleAnimation()
}

Код действия:

override fun onPageSelected(position: Int) {
 when(position) {
 0 -> (pagerAdapter.getItem(position) as SearchFragment).startViewAnimations()
 }
 }

Ниже приведена ошибка:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.beeland.consumer, PID: 5892
    java.lang.IllegalStateException: txt5Km must not be null
        at com.beeland.consumer.fragment.appintro.SearchFragment$startViewAnimations$1$1.run(SearchFragment.kt:56)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6165)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)

1 Ответ

0 голосов
/ 25 апреля 2018

Если вы используете Kotlin Android Extensions и фрагменты, учтите, что вы можете вызывать представления по его идентификаторам только в onViewCreated и более поздних версиях. Если вы позвоните раньше, вы увидите NPE.

Если вы не используете KAE, вы можете инициализировать вид во фрагменте следующим образом:

class MyFragment: Fragment() {

    // other methods

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        val myTextView = view.findViewById<TextView>(R.id.my_text_view)

        // now you can do something with views
    }

    // other methods
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...