lateinit 属性 dataName 尚未初始化
lateinit property dataName has not been initialized
我不知道这是怎么回事
主要Activity
private lateinit var adapter: Adapter
private lateinit var newRecyclerView: RecyclerView
private lateinit var dataAvatar: Array<Int>
private lateinit var dataUsername: Array<String>
private lateinit var dataName: Array<String>
private lateinit var dataLocation: Array<String>
private lateinit var dataRepository: Array<String>
private lateinit var dataCompany: Array<String>
private lateinit var dataFollowers: Array<String>
private lateinit var dataFollowing: Array<String>
private lateinit var users: ArrayList<Data>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
newRecyclerView = findViewById(R.id.Rc_list)
newRecyclerView.layoutManager = LinearLayoutManager(this)
newRecyclerView.setHasFixedSize(true)
users = arrayListOf<Data>()
getUserdata()
}
private fun getUserdata() {
for (i in dataName.indices) {
val user = Data(
dataAvatar[i],
dataName[i],
dataCompany[i],
dataLocation[i],
dataRepository[i],
dataFollowers[i],
dataFollowing[i],
dataUsername[i]
)
/*user.avatar = dataAvatar[i]
user.name = dataName[i]
user.company = dataCompany[i]
user.location = dataLocation[i]
*/
users.add(user)
}
val adapter = Adapter(users)
newRecyclerView.adapter = adapter
adapter.setOnItemClickListener(listener = object : Adapter.onItemClickListener {
override fun onItemClick(position: Int) {
// Toast.makeText(this@MainActivity, users[position].name, Toast.LENGTH_SHORT).show()
val intent = Intent(this@MainActivity, Detail::class.java)
intent.putExtra("avatar", users[position].avatar)
intent.putExtra("username", users[position].username)
intent.putExtra("name", users[position].name)
intent.putExtra("location", users[position].location)
intent.putExtra("repository", users[position].repository)
intent.putExtra("company", users[position].company)
intent.putExtra("followers", users[position].followers)
intent.putExtra("following", users[position].following)
startActivity(intent)
this@MainActivity.startActivity(intent)
Toast.makeText(this@MainActivity, users[position].name, Toast.LENGTH_SHORT).show()
}
})
}
我遇到了这个问题
2022-03-18 09:18:27.393 13874-13874/com.example.githubuser2 E/AndroidRuntime:致命异常:main
进程:com.example.githubuser2,PID:13874
java.lang.RuntimeException: 无法启动 activity ComponentInfo{com.example.githubuser2/com.example.githubuser2.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit 属性 dataName尚未初始化
在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
在 android.os.Handler.dispatchMessage(Handler.java:106)
在 android.os.Looper.loop(Looper.java:223)
在 android.app.ActivityThread.main(ActivityThread.java:7656)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit 属性 dataName 尚未初始化
在 com.example.githubuser2.MainActivity.getUserdata(MainActivity.kt:100)
在 com.example.githubuser2.MainActivity.onCreate(MainActivity.kt:40)
在 android.app.Activity.performCreate(Activity.java:8000)
在 android.app.Activity.performCreate(Activity.java:7984)
在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
在 android.os.Handler.dispatchMessage(Handler.java:106)
在 android.os.Looper.loop(Looper.java:223)
在 android.app.ActivityThread.main(ActivityThread.java:7656)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2022-03-18 09:18:27.469 13874-13874/com.example.githubuser2 I/Process:发送信号。 PID:13874 SIG:9
在 android studio 上启动成功,但应用程序未打开..它只是在我看到第一个 activity
之前强行关闭
lateinit property dataName has not been initialized
这是因为您在使用
中的值初始化它之前访问了 dataName 变量
val user = Data(
dataAvatar[i],
dataName[i], <<<<
dataCompany[i],
dataLocation[i],
dataRepository[i],
dataFollowers[i],
dataFollowing[i],
dataUsername[i]
)
对于
private lateinit var dataName: Array<String>
.
用数据填充数组然后访问它。
您正在使用 dataName 而未初始化
尝试
private var dataName: ArrayList<String> = ArrayList()
或者您可以在运行时检查 lateinit 是否被初始化
lateinit var dataName: Array<String>
if(this::dataName.isInitialized) { // Do your work}
else {//dataName is not initialized }
在初始化之前访问 lateinit 变量。
你必须在使用它之前初始化 lateinit 变量。
错误点在这里
private fun getUserdata() {
for (i in dataName.indices) { // << ErrorPoint dataName.indices (dataName is not initialized but try to access it)
...
}
}
你可以通过isInitislized
检查是否初始化
if(::dataName.isInitialized){
for (i in dataName.indices) {
// ... do something
}
}
我不知道这是怎么回事
主要Activity
private lateinit var adapter: Adapter
private lateinit var newRecyclerView: RecyclerView
private lateinit var dataAvatar: Array<Int>
private lateinit var dataUsername: Array<String>
private lateinit var dataName: Array<String>
private lateinit var dataLocation: Array<String>
private lateinit var dataRepository: Array<String>
private lateinit var dataCompany: Array<String>
private lateinit var dataFollowers: Array<String>
private lateinit var dataFollowing: Array<String>
private lateinit var users: ArrayList<Data>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
newRecyclerView = findViewById(R.id.Rc_list)
newRecyclerView.layoutManager = LinearLayoutManager(this)
newRecyclerView.setHasFixedSize(true)
users = arrayListOf<Data>()
getUserdata()
}
private fun getUserdata() {
for (i in dataName.indices) {
val user = Data(
dataAvatar[i],
dataName[i],
dataCompany[i],
dataLocation[i],
dataRepository[i],
dataFollowers[i],
dataFollowing[i],
dataUsername[i]
)
/*user.avatar = dataAvatar[i]
user.name = dataName[i]
user.company = dataCompany[i]
user.location = dataLocation[i]
*/
users.add(user)
}
val adapter = Adapter(users)
newRecyclerView.adapter = adapter
adapter.setOnItemClickListener(listener = object : Adapter.onItemClickListener {
override fun onItemClick(position: Int) {
// Toast.makeText(this@MainActivity, users[position].name, Toast.LENGTH_SHORT).show()
val intent = Intent(this@MainActivity, Detail::class.java)
intent.putExtra("avatar", users[position].avatar)
intent.putExtra("username", users[position].username)
intent.putExtra("name", users[position].name)
intent.putExtra("location", users[position].location)
intent.putExtra("repository", users[position].repository)
intent.putExtra("company", users[position].company)
intent.putExtra("followers", users[position].followers)
intent.putExtra("following", users[position].following)
startActivity(intent)
this@MainActivity.startActivity(intent)
Toast.makeText(this@MainActivity, users[position].name, Toast.LENGTH_SHORT).show()
}
})
}
我遇到了这个问题
2022-03-18 09:18:27.393 13874-13874/com.example.githubuser2 E/AndroidRuntime:致命异常:main 进程:com.example.githubuser2,PID:13874 java.lang.RuntimeException: 无法启动 activity ComponentInfo{com.example.githubuser2/com.example.githubuser2.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit 属性 dataName尚未初始化 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) Caused by: kotlin.UninitializedPropertyAccessException: lateinit 属性 dataName 尚未初始化 在 com.example.githubuser2.MainActivity.getUserdata(MainActivity.kt:100) 在 com.example.githubuser2.MainActivity.onCreate(MainActivity.kt:40) 在 android.app.Activity.performCreate(Activity.java:8000) 在 android.app.Activity.performCreate(Activity.java:7984) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 2022-03-18 09:18:27.469 13874-13874/com.example.githubuser2 I/Process:发送信号。 PID:13874 SIG:9
在 android studio 上启动成功,但应用程序未打开..它只是在我看到第一个 activity
之前强行关闭 lateinit property dataName has not been initialized
这是因为您在使用
中的值初始化它之前访问了 dataName 变量val user = Data(
dataAvatar[i],
dataName[i], <<<<
dataCompany[i],
dataLocation[i],
dataRepository[i],
dataFollowers[i],
dataFollowing[i],
dataUsername[i]
)
对于
private lateinit var dataName: Array<String>
.
用数据填充数组然后访问它。
您正在使用 dataName 而未初始化
尝试
private var dataName: ArrayList<String> = ArrayList()
或者您可以在运行时检查 lateinit 是否被初始化
lateinit var dataName: Array<String>
if(this::dataName.isInitialized) { // Do your work}
else {//dataName is not initialized }
在初始化之前访问 lateinit 变量。 你必须在使用它之前初始化 lateinit 变量。
错误点在这里
private fun getUserdata() {
for (i in dataName.indices) { // << ErrorPoint dataName.indices (dataName is not initialized but try to access it)
...
}
}
你可以通过isInitislized
if(::dataName.isInitialized){
for (i in dataName.indices) {
// ... do something
}
}