When I run my android application my app is crashing. Can anyone find out my mistake?
Here is my error
:
kotlin.UninitializedPropertyAccessException: lateinit property layoutManager has not been initialized
at com.example.bookfactory.DashboardFragment.getLayoutManager(DashboardFragment.kt:27)
at com.example.bookfactory.DashboardFragment.onCreateView$lambda-5(DashboardFragment.kt:149)
at com.example.bookfactory.DashboardFragment.$r8$lambda$kfcXUUMc72SMC9NHSb3PcIuvj10(Unknown Source:0)
at com.example.bookfactory.DashboardFragment$$ExternalSyntheticLambda6.onResponse(Unknown Source:4)
at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:100)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
And here is the DashboardFragment.kt
package com.example.bookfactory
import android.app.AlertDialog
import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.Toast
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
import com.android.volley.toolbox.Volley
import com.example.bookfactory.model.Book
import com.example.bookfactory.util.ConnectionManager
class DashboardFragment : Fragment() {
lateinit var recyclerdashboard:RecyclerView
lateinit var layoutManager: RecyclerView.LayoutManager
lateinit var btncheckinternet:Button
/*val booklist= arrayListOf(
"wings of fire",
"rich dad poor dad",
"The empathy edge",
"believe in yourself",
"think and grow rich",
"the screct",
"the subtle art of not giving a fuck",
"the power of positive thinking",
"nelson mandela long walk to freedom",
"Bhagavad-Gita"
)*/
lateinit var recycleradapter: DashboardRecyclerAdapter
var bookinfolist= arrayListOf<Book>()
/* val bookinfolist= arrayListOf<Book>(
Book("Wings of fire","APJ abdul kalam","Rs. 179","4.5",R.drawable.wingoffire123),
Book("Rich dad poor dad","Robert Kiyosaki","Rs. 199","4.5",R.drawable.richdadpoordad),
Book("The empathy edge","Maria Ross","Rs. 159","3.6",R.drawable.empathyedge),
Book("Believe in yourself","Dr. Murphy Joseph","Rs. 219","4.0",R.drawable.believeinurself),
Book("Think and grow rich","Napoleon Hill","Rs. 279","4.2",R.drawable.thinkandgrowrich),
Book("The secret","Rhonda Byrne","Rs. 299","5.0",R.drawable.thesecret),
Book("The subtle art of not giving a fuck","Mark Manson","Rs. 399","4.5",R.drawable.thesubtitleartof),
Book("The power of positive thinking","Norman Vincent Peale","Rs. 249","4.1",R.drawable.powerofpositive),
Book("Nelson mandela long walk to freedom","Nelson mandela","Rs. 349","4.6",R.drawable.longwalktofreedom),
Book("Bhagavad-Gita","Vyasudu","249","5.0",R.drawable.bhagavadgita)
)*/
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view=inflater.inflate(R.layout.fragment_dashboard, container, false)
btncheckinternet= view.findViewById(R.id.btncheckinternet)
btncheckinternet.setOnClickListener{
if(ConnectionManager().checkConnectivity(activity as Context)){
val dialog=AlertDialog.Builder(activity as Context)
dialog.setTitle("success")
dialog.setMessage("Internet Connection Found")
dialog.setPositiveButton("ok"){text,listener->
}
dialog.setNegativeButton("Cancel"){text,listener->
}
dialog.create()
dialog.show()
}else{
val dialog=AlertDialog.Builder(activity as Context)
dialog.setTitle("Error")
dialog.setMessage("Internet Connection Was Not Found")
dialog.setPositiveButton("ok"){text,listener->
}
dialog.setNegativeButton("Cancel"){text,listener->
}
dialog.create()
dialog.show()
}
}
/*
28-10-21 12.05pm
*/
recyclerdashboard=view.findViewById(R.id.recyclerdashboard)
/*
above cause mistake.be aware of that
*/
/* layoutManager=LinearLayoutManager(activity)
recycleradapter= DashboardRecyclerAdapter(activity as Context,bookinfolist)
recyclerdashboard.adapter=recycleradapter
recyclerdashboard.layoutManager=layoutManager
recyclerdashboard.addItemDecoration(
DividerItemDecoration(
recyclerdashboard.context,
(layoutManager as LinearLayoutManager).orientation
)
)*/
/*
01-11-21 below code
xml directory below res folder
*/
val queue= Volley.newRequestQueue(activity as Context)
val url="http://13.235.250.119/v1/book/fetch_books/"
val jsonObjectRequest =
object : JsonObjectRequest(Request.Method.GET, url, null, Response.Listener {
// Here we will handle the respose
val success = it.getBoolean("success")
if (success) {
val data = it.getJSONArray("data")
for (i in 0 until data.length()) {
val bookJsonObject = data.getJSONObject(i)
val bookObject = Book(
bookJsonObject.getString("book_id"),
bookJsonObject.getString("name"),
bookJsonObject.getString("author"),
bookJsonObject.getString("rating"),
bookJsonObject.getString("price"),
bookJsonObject.getString("image")
)
bookinfolist.add(bookObject)
recyclerdashboard.layoutManager=layoutManager
recyclerdashboard.addItemDecoration(
DividerItemDecoration(
recyclerdashboard.context,
(layoutManager as LinearLayoutManager).orientation
)
)
recycleradapter= DashboardRecyclerAdapter(activity as Context,bookinfolist)
recyclerdashboard.adapter=recycleradapter
}
} else {
Toast.makeText(activity as Context, "Some ERROR OCCURED", Toast.LENGTH_SHORT).show()
}
}, Response.ErrorListener {
// here we handel the error
print("error $it")
}) {
override fun getHeaders(): MutableMap<String, String> {
val headers = HashMap<String, String>()
headers["Content-type"] = "application/json"
headers["token"] = "9bf534118365f1"
return headers
}
}
queue.add(jsonObjectRequest)
return view
}
}
CodePudding user response:
Everything is in the error message:
lateinit property layoutManager has not been initialized
You have commented out the initialization of the layoutManager
:
layoutManager=LinearLayoutManager(activity)