Как правильно установить SwipeRefreshLayout на Android Studio с помощью kotlin? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать SwipeRefreshLayout в своем проекте, но что-то не так ... и я не знаю что! Ниже я показываю код kotlin, XML и error, которые я получаю.

ПРИМЕЧАНИЕ, это ФРАГМЕНТ

КОД KOTLIN:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        swipeRefresh.setOnRefreshListener {
            refreshAction() // refresh your list contents somehow
            swiperefresh_saloes.isRefreshing = false
        }
}

XML-код

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".Activities.Fragments.SaloesFragment">

        <android.support.v4.widget.SwipeRefreshLayout
                android:id="@+id/swipeRefresh"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

        <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerViewSaloes"
                android:scrollbars="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.v4.widget.SwipeRefreshLayout>

</RelativeLayout>

но я получаю следующую ошибку:

java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.support.v4.widget.SwipeRefreshLayout.setOnRefreshListener (android.support.v4.widget.SwipeRefreshLayout $ OnRefreshListener null' on reference 'null' on reference 'null reference' null 'on reference' null 'on reference' null 'on reference' null 'on reference' null 'on reference' null '' reference on null 'on reference' null '' reference on null 'on reference' null '' reference on null 'on reference' null '' reference 'null' 'reference' null '' reference 'null' 'ссылка на' 'ссылка на null' на 'ссылка на' 'ссылка на нуль' ') at com.zowye.b2b.Activities.Fragments.SaloesFragment.onCreate (SaloesFragment.kt: 69)

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Я нашел ошибку: Поскольку это фрагмент, я могу получить доступ к SwipeRefreshLayout только после того, как onCreateView раздувает фрагмент.

Итак, я установил слушателя внутри onViewCreated

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

        swipeRefresh.setOnRefreshListener {
            refreshAction()                    // refresh your list contents somehow
            swipeRefresh.isRefreshing = false   // reset the SwipeRefreshLayout (stop the loading spinner)
        }

    }
0 голосов
/ 03 мая 2019

Вызовы OnCreate до onCreateView. Ваше представление еще не отображается, когда вы вызываете обновление свайпом.Вместо этого поставьте проверку перед вызовом этого метода, т.е. if (activity! = Null).А в onCreateView фрагмента предоставьте представление фрагмента.Затем вызовите этот метод

    override fun onCreateView(inflater: LayoutInflater, 
                            container: ViewGroup?, 
                            savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.fragment_dog_details, container, false)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...