Android 在片段视图中获取IllegalStateException表示视图不能为null为什么?

Android 在片段视图中获取IllegalStateException表示视图不能为null为什么?,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,是的,我已在onViewCreated中写入我的视图访问权限。所以有时候它会表现出来 IllegalStateException:视图不能为null 如果我在清理完项目后立即运行,它就可以正常工作了 糊涂了 另一个令人困惑的问题是,如果我在onViewCreated中使用view override fun onViewCreated(view: View, savedInstanceState: Bundle?) {myTextView.text = "MyName"} 工作正常 但如果将其分

是的,我已在onViewCreated中写入我的视图访问权限。所以有时候它会表现出来

IllegalStateException:视图不能为null

如果我在清理完项目后立即运行,它就可以正常工作了

糊涂了

另一个令人困惑的问题是,如果我在onViewCreated中使用view

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {myTextView.text = "MyName"}
工作正常

但如果将其分配到改装呼叫响应中

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    netWorkCallByRetrofit()
} 

netWorkCall(){
   myTextView.text = "MyName"
}
它不起作用了。 如果我在清理完项目后立即运行,它就可以正常工作了!!! 同样,如果在onViewCreated中初始化它,它工作得很好 像

它在工作


有线索吗

在片段中,始终引用您在
onCreateView
中返回的视图。 我倾向于做一个
private var thisView:View?=在片段主体中为null,然后在
onCreateView
中将其分配给要返回的视图。片段的其余部分总是引用,例如
thisView.myTextView.text
,您不应该再有任何奇怪的空指针错误。 一些代码可能会让这变得不那么混乱:

class MyClass: Fragment(){
    private lateinit var thisView: View // can also make it nullable and set it to null here

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        thisView = inflater.inflate(R.layout.my_cool_layout, container, false)

        thisView.myTextView.setOnClickListener{
            toast("yaaaay")
        }        
        return thisView
    }
}

这里只是猜测一下,在其他布局中是否有与myTextView具有相同id的视图?更改id可能会有所帮助。是的,我在其他视图中有相同的id,并且也重命名了,但结果相同!也许您需要调用view.myTextView.text(view-fragment的视图)
class MyClass: Fragment(){
    private lateinit var thisView: View // can also make it nullable and set it to null here

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        thisView = inflater.inflate(R.layout.my_cool_layout, container, false)

        thisView.myTextView.setOnClickListener{
            toast("yaaaay")
        }        
        return thisView
    }
}