我不知道这是怎么回事
主要活动
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。实例githubuser2 E/AndroidRuntime:致命异常:主进程:com。实例githubuser2,PID:13874 java。lang.RuntimeException:无法启动活动组件信息{com.example.githubuser2/com.example.githubuser2.MainActivity}:kotlin。UninitializedPropertyAccessException:lateinit属性dataName尚未在android上初始化。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:3449)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3601)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:85)。应用程序。服务器事务。交易执行人。android上的executeCallbacks(TransactionExecutor.java:135)。应用程序。服务器事务。交易执行人。在android上执行(TransactionExecutor.java:95)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:2066)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:223)。应用程序。活动线程。java上的main(ActivityThread.java:7656)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodandArgscaler。在com上运行(RuntimeInit.java:592)。Android内部的操作系统。合子岩。主要(ZygoteInit.java:947)由:kotlin引起。UninitializedPropertyAccessException:lateinit属性dataName尚未在com上初始化。实例githubuser2。主要活动。getUserdata(MainActivity.kt:100)位于com。实例githubuser2。主要活动。在android上创建(MainActivity.kt:40)。应用程序。活动android上的performCreate(Activity.java:8000)。应用程序。活动在android上执行创建(Activity.java:7984)。应用程序。仪表。android上的callActivityOnCreate(Instrumentation.java:1309)。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:3422)。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:3601)
在android Studio上启动成功,但应用程序没有打开...它只是在我看到第一个活动之前强制关闭
您在没有初始化的情况下使用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属性dataName
这是因为在使用中的值初始化dataName变量之前,您正在访问该变量
val user = Data(
dataAvatar[i],
dataName[i], <<<<
dataCompany[i],
dataLocation[i],
dataRepository[i],
dataFollowers[i],
dataFollowing[i],
dataUsername[i]
)
对于私有lateinit var dataName:Array
用数据填充阵列,然后访问它。
在初始化之前访问lateinit变量。您必须在使用它之前初始化lateinit变量。
错误点在这里
private fun getUserdata() {
for (i in dataName.indices) { // << ErrorPoint dataName.indices (dataName is not initialized but try to access it)
...
}
}
您可以通过isInitislize
检查初始化与否
if(::dataName.isInitialized){
for (i in dataName.indices) {
// ... do something
}
}
我正在尝试使用Spring-boot+Vaadin创建一个web项目,并且希望使用spring-data-jpa和hibernate从PostgreSQL数据库中获取数据。 在我的Vaadin看来,我尝试自动连接我的服务类,但我总是得到null,而且eror堆栈跟踪没有告诉我原因。 数据库得我得配置: 视图和UI: pom.xml: 我的服务: 更新的解决方案:
我正在为DI与Dagger2的项目工作。我正在MVP架构中注入presenter。由于某种原因,当我构建应用程序时,它会出现错误:“LateInit property presenter has not been initialized”。我知道这意味着没有注射,但我不明白为什么。下面是我的代码: 应用程序类 家庭模块 AppComponent 房屋结构 如果需要任何关于代码的其他信息,请询问..
当变量只在OnCreate中声明时,为什么我的片段不进入onCreateView?
我的代码成功构建,但每当我运行它时都会出现异常。不知道为什么匕首2不初始化变量。请告诉我哪里错了。给出以下例外情况: UninitializedPropertyAccessException:lateinit属性databaseService尚未初始化 依赖关系:
我经常得到。但这个应用程序运行得很好。注意:我不想将演示者注入到活动中。提前谢谢! 以下是我的活动: 这是我的主持人: 这是我的数据管理器: 和AppDataManager: 最后,我的测试失败了: gradle文件: 我的模块课程: 实际错误是科特林。UninitializedPropertyAccessException:lateinit属性dataManager尚未初始化
Json服务器数据显示,在使用retrofit2和rxjava2的android中,当参数传递给inteface时,会出现错误。 接口