Используя kotlin-android-extensions, я обратился по имени к view и пытался использовать её метод, однако у меня выбило nullPointerException. Хотя мне сам ide подсказывала, что есть такая вот конкретная вьюха myCalendar в таком-то xml файле. Также, хочу отметить, пробовал стандартным способом дать переменной ссылку через findViewById, потом опять же использовать метод вьюхи, в таком случае всё работало.
p.s. вы наверное спросите: "почему я раньше не ловил null?", ибо я ещё до этого пытался обратиться к myCalendar, то я вам незамедлительно отвечу: у меня массив был нулевого размера, цикл не запускался.
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import com.applandeo.materialcalendarview.EventDay
import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.QueryDocumentSnapshot
import kotlinx.android.synthetic.main.fragment_timetable.*
import java.util.*
import kotlin.collections.ArrayList
import com.example.simbirsoftproject.Data as MyData
class MyEventDay(day: Calendar, imageResource: Int, var data: MyData) : EventDay(day, imageResource)
class FragmentTimetable : Fragment() {
private var events: MutableList<EventDay> = ArrayList()
val db: FirebaseFirestore = FirebaseFirestore.getInstance()
private val dataOfLessons: MutableList<MyData> = getData()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view: View = inflater.inflate(R.layout.fragment_timetable, container, false)
for (data: MyData in dataOfLessons) {
Toast.makeText(
context,
data.getDay() + "." + data.getMonth() + "." + data.getYear(),
Toast.LENGTH_SHORT
).show()
val calendar: Calendar = Calendar.getInstance()
calendar.set(data.getDay() as Int, data.getMonth() as Int, data.getYear() as Int)
myCalendar.setDate(calendar)
events.add(EventDay(calendar, R.drawable.fui_ic_googleg_color_24dp))
}
myCalendar.setEvents(events) //здесь я ловлю маслину (null)
return view
}
fun getData(): MutableList<com.example.simbirsoftproject.Data> {
val dataOfLessons: MutableList<MyData> = ArrayList()
db.collection("GroupLessons")
.get()
.addOnCompleteListener { p0 ->
for (document: QueryDocumentSnapshot in p0.result!!) {
Log.d("logmy", "В цикле1")
val dataClass: MyData = document.toObject(MyData::class.java)
Log.d("logmy", "В цикле2")
dataOfLessons.add(
MyData(
dataClass.getName(),
dataClass.getDescription(),
dataClass.getPhotoID(),
dataClass.getStartTime(),
dataClass.getEndTime(),
dataClass.getDay(),
dataClass.getMonth(),
dataClass.getYear()
)
)
Log.d("logmy", "В цикле3")
}
}
return dataOfLessons
}
}