Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android View.getContext返回null,为什么?_Android_Android View_Android Lifecycle - Fatal编程技术网

Android View.getContext返回null,为什么?

Android View.getContext返回null,为什么?,android,android-view,android-lifecycle,Android,Android View,Android Lifecycle,我使用带有javascript界面的WebView,有时在WebView上调用loadUrl时,mWebView.getContext()returnnull 视图怎么可能没有上下文?为什么? 没有上下文的视图是否仍在使用或可重用 当我的观点没有背景时,我该怎么办 最重要的,如果视图没有上下文,是否执行mWebView.post(新的Runnable(){… 这个代码相关吗 if (Looper.getMainLooper().getThread() == Thread.currentThrea

我使用带有javascript界面的WebView,有时在WebView上调用
loadUrl
时,
mWebView.getContext()
return
null

  • 视图怎么可能没有上下文?为什么?
  • 没有上下文的视图是否仍在使用或可重用
  • 当我的观点没有背景时,我该怎么办
  • 最重要的,如果视图没有上下文,是否执行
    mWebView.post(新的Runnable(){…
  • 这个代码相关吗

    if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
        mWebView.loadUrl("javascript:...");
    } else {
        mWebView.post(new Runnable() {
            public void run() {
                mWebView.loadUrl("javascript:...");
            }
        });
    }
    

  • 视图中出现空上下文的2个常见原因:

    • 您试图在异步(处理程序、网络调用)调用的回调中获取上下文,但由于用户的另一个操作(例如:pressed back),活动/片段已消失。因此,视图已分离,不再具有上下文

    • 您的活动和视图层次结构的某个位置出现内存泄漏,并且有两个或多个实例。然后,您不再引用的实例中发生了某些情况,但视图已丢失到其上下文的链接

    关于处理者。 我不确定视图是否有自己的处理程序,或者它是否使用了它所附加到的活动的处理程序,您可能需要阅读源代码才能找到。但是问题并不是真正相关的:如果视图没有上下文,那么您就有一个更大的问题:它不在屏幕上

    关于5.中的代码是否相关,您需要回答以下问题:为什么不知道代码在哪个线程上运行

    当您知道自己在哪个线程上,并且如果不在主线程上对您有意义,那么使用处理程序是在main.和Activity.runOnUiThread()上执行代码的有效方法


    请记住,处理程序的生命周期与活动无关。因此,当您的活动/片段暂停时,您应该清除消息队列和可运行项

    如果发生这种情况主要是因为承载小部件的活动/片段正在关闭感谢您的回答,您能检查问题4和5吗?如果我想做些什么呢在webview中输入墨迹,但
    mWebView.getContext()
    返回null,然后片段被恢复,操作未被触发,导致页面中出现奇怪的状态如果视图没有上下文,那么由于某些原因它不在屏幕上。这是您需要查找的“某些原因”,webview将正常工作