简体   繁体   English

java.lang.IllegalArgumentException:指定为非空的参数是 null:- android,应用程序启动但立即崩溃

[英]java.lang.IllegalArgumentException: Parameter specified as non-null is null: - android, app starting but crashing straight away

Hey guys I have problem with starting my app, I don't know what is the problem, it just crashes right away when I start it, from the log I suppose it is something about databinding but I don't really know what's wrong right now:C嘿伙计们,我在启动我的应用程序时遇到问题,我不知道是什么问题,当我启动它时它会立即崩溃,从日志中我想这是关于数据绑定的问题,但我真的不知道出了什么问题对现在:C

2020-04-10 22:22:22.716 32624-32624/? I/rss.ing_projec: Late-enabling -Xcheck:jni
2020-04-10 22:22:22.746 32624-32624/? E/rss.ing_projec: Unknown bits set in runtime_flags: 0x8000
2020-04-10 22:22:23.053 32624-32624/com.lswarss.ing_project I/Perf: Connecting to perf service.
2020-04-10 22:22:23.070 32624-32624/com.lswarss.ing_project V/Font: Change font:1
2020-04-10 22:22:23.071 32624-32624/com.lswarss.ing_project V/Font: Default family:android.graphics.Typeface@177a2b82
2020-04-10 22:22:23.077 32624-32676/com.lswarss.ing_project E/Perf: Fail to get file list com.lswarss.ing_project
2020-04-10 22:22:23.077 32624-32676/com.lswarss.ing_project E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
2020-04-10 22:22:23.077 32624-32676/com.lswarss.ing_project E/Perf: Fail to get file list com.lswarss.ing_project
2020-04-10 22:22:23.078 32624-32676/com.lswarss.ing_project E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array
2020-04-10 22:22:23.156 32624-32624/com.lswarss.ing_project W/rss.ing_projec: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2020-04-10 22:22:23.157 32624-32624/com.lswarss.ing_project W/rss.ing_projec: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2020-04-10 22:22:23.213 32624-32624/com.lswarss.ing_project V/FlingOptimizerScroller: FlingOptimizerOverScroller Init
2020-04-10 22:22:23.251 32624-32624/com.lswarss.ing_project D/AndroidRuntime: Shutting down VM
2020-04-10 22:22:23.253 32624-32624/com.lswarss.ing_project E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.lswarss.ing_project, PID: 32624
    java.lang.RuntimeException: Failed to call observer method
        at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:226)
        at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)
        at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)
        at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:37)
        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
        at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)
        at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)
        at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
        at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:2735)
        at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
        at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:2739)
        at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
        at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:2583)
        at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:258)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:550)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1514)
        at android.app.Activity.performStart(Activity.java:7838)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3398)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2109)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at com.lswarss.ing_project.adapters.BindingAdaptersKt.bindRecyclerView(Unknown Source:7)
        at com.lswarss.ing_project.databinding.PostsFragmentBindingImpl.executeBindings(PostsFragmentBindingImpl.java:125)
2020-04-10 22:22:23.253 32624-32624/com.lswarss.ing_project E/AndroidRuntime:     at androidx.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:473)
        at androidx.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:445)
        at androidx.databinding.ViewDataBinding$OnStartListener.onStart(ViewDataBinding.java:1687)
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216)
            ... 41 more

That's the log given by android studio And it have some problems with this class but what wrong with it:那是 android 工作室给出的日志 这个 class 有一些问题,但它有什么问题:

package com.lswarss.ing_project.adapters

import android.view.View
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import androidx.recyclerview.widget.RecyclerView
import com.lswarss.ing_project.R
import com.lswarss.ing_project.domain.PostItem
import com.lswarss.ing_project.fragments.PostsApiStatus

@BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: List<PostItem>?){
    val adapter  = recyclerView.adapter as PostsAdapter
    adapter.submitList(data)
}


@BindingAdapter("postApiStatus")
fun bindStatus(statusImageView: ImageView, status: PostsApiStatus?) {
    when (status) {
        PostsApiStatus.LOADING -> {
            statusImageView.visibility = View.VISIBLE
            statusImageView.setImageResource(R.drawable.loading_animation)
        }
        PostsApiStatus.ERROR -> {
            statusImageView.visibility = View.VISIBLE
            statusImageView.setImageResource(R.drawable.ic_connection_error)
        }
        PostsApiStatus.DONE -> {
            statusImageView.visibility = View.GONE
        }
    }
}

I was trying to do this application using the app made in udacity course Mars Real Estate App我正在尝试使用 udacity course Mars Real Estate App中制作的应用程序来执行此应用程序

Here is link to my app on github: https://github.com/LSWarss/ing_project The code I have problems with is on branch new_architecture这是 github 上我的应用程序的链接: https://github.com/LSWarss/ing_project我遇到问题的代码在分支 new_architecture

Sory if this is stupid question but I'm new to android and koltlin, or even posting on stack:)对不起,如果这是一个愚蠢的问题,但我是 android 和 koltlin 的新手,甚至在堆栈上发帖:)

   Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
   at com.lswarss.ing_project.adapters.BindingAdaptersKt.bindRecyclerView(Unknown Source:7

This is happening because as long as I saw from github, in your PostsFragment you are not setting the adapter to the recycler view, so it's null when the binding adapter is trying to access it.发生这种情况是因为只要我从 github 看到,在您的PostsFragment中,您没有将适配器设置为回收器视图,因此当绑定适配器尝试访问它时,它是null

Also, I noticed this in your master branch:另外,我在您的主分支中注意到了这一点:

viewModel.posts.observe(viewLifecycleOwner, Observer {
    posts -> recycler_view_posts.also{
    it.layoutManager = LinearLayoutManager(requireContext())
    it.setHasFixedSize(true)
    it.adapter = PostsAdapter(posts)
}

You don't have to initialize your recycler view each time you get something on observe.每次观察到某些东西时,您不必初始化您的回收站视图。

In onViewCreated() method from fragment you can set the adapter and the layoutManager (and this will also solve your error if you add it in PostsFragment):在片段的onViewCreated()方法中,您可以设置适配器和 layoutManager(如果您在 PostsFragment 中添加它,这也将解决您的错误):

private fun initRecyclerView(){
    recycler_view_posts.run{
        adapter = PostsAdapter(posts)
        layoutManager = LinearLayoutManager(requireContext())
        setHasFixedSize(true)
    }
}

and then on observe you only have to refresh the content with the approach from new_architecture branch ( adapter.submitList(list) ) or by setting the new list in adapter and calling adapter.notifyDataSetChange() .然后观察你只需要使用 new_architecture 分支( adapter.submitList(list) )的方法或通过在适配器中设置新列表并调用adapter.notifyDataSetChange()来刷新内容。

change bindRecyclerView to this:bindRecyclerView更改为:

@BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: List<PostItem>?){
    val adapter  = recyclerView.adapter as PostsAdapter? // changed to nullable type
    adapter?.submitList(data)// nullablity checked
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.IllegalArgumentException:指定为非空的参数是 Java 代码中的 null 错误 - java.lang.IllegalArgumentException: Parameter specified as non-null is null error in Java code 错误:java.lang.IllegalArgumentException:指定为非null的参数为空Firebase事务Kotlin - Error: java.lang.IllegalArgumentException: Parameter specified as non-null is null firebase transaction kotlin 由java.lang.IllegalArgumentException引起的指定为非null的参数为null - Parameter specified as non-null is null caused by java.lang.IllegalArgumentException java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull - java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull java.lang.IllegalArgumentException:纹理必须为非空(CanvasJs 和 JavaFX) - java.lang.IllegalArgumentException: Texture must be non-null (CanvasJs and JavaFX) FusedLocationProviderClient 因 java.lang.NullPointerException 崩溃:指定为非空的参数位置为 null - FusedLocationProviderClient crash with java.lang.NullPointerException: parameter location specified as non-null is null JAXB给我:java.lang.IllegalArgumentException:参数不能为null - JAXB gives me: java.lang.IllegalArgumentException: is parameter must not be null HttpClient异常:java.lang.IllegalArgumentException:host参数为null - HttpClient exception: java.lang.IllegalArgumentException: host parameter is null java.lang.IllegalArgumentException:参数绑定的名称不得为 null 或空 - java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty 如何修复Android中指定为非空的参数为空错误 - How to fix Parameter specified as non-null is null error in Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM