Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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 TWebBrowser从字符串加载html时引发线程异常_Android_Delphi_Firemonkey_Delphi 10.1 Berlin - Fatal编程技术网

Android TWebBrowser从字符串加载html时引发线程异常

Android TWebBrowser从字符串加载html时引发线程异常,android,delphi,firemonkey,delphi-10.1-berlin,Android,Delphi,Firemonkey,Delphi 10.1 Berlin,我正在开发一个将HTML字符串加载到WebBrowser的应用程序,但是当我从WebBrowser调用LoadFromString方法时,它会抛出一个RuntimeException,并显示以下消息: java.lang.RuntimeException:java.lang.Throwable:在线程“thread-2”上调用了WebView方法。必须在同一线程上调用所有WebView方法。(在null上调用的预期活套活套(main,tid 2){c7ba400},FYI主活套是活套(main,

我正在开发一个将HTML字符串加载到WebBrowser的应用程序,但是当我从WebBrowser调用LoadFromString方法时,它会抛出一个RuntimeException,并显示以下消息:

java.lang.RuntimeException:java.lang.Throwable:在线程“thread-2”上调用了WebView方法。必须在同一线程上调用所有WebView方法。(在null上调用的预期活套活套(main,tid 2){c7ba400},FYI主活套是活套(main,tid 2){c7ba400})

HTML存储在一个文件中并加载到一个字符串中,只是出于测试原因,最终的应用程序将从DataSnap获取字符串,并使用WebBrowser显示它

代码如下:

procedure LoadString;
var
  htmlContent: String;
  filePath: String;
  dbpath: String;
begin
  filePath := TPath.Combine(TPath.GetDocumentsPath, 'index.html');
  htmlContent := TFile.ReadAllText(filePath);
  WebBrowser1.LoadFromStrings(htmlContent, 'about:blank');
  btnSearch.Visible := False;
  TabControl1.GotoVisibleTab(tbResult.Index);
end;
我没有在此应用程序中使用线程


如果相关的话,我正在使用Delphi 10.1 Berlin并在带有Android 9的Moto G5中进行测试。

WebBroser方法需要在UI线程中运行,就像Dalija Prasnikar评论说的那样,我将调用移动到CallInUiThread,现在一切正常。

在柏林,Delphi主线程与Android UI线程不同,您可能需要将WebView访问与CallInUiThread调用同步。另一种可能性是,调用LoadString的线程与创建WebView的线程不同。我没有Berlin,因此无法验证,因为Tokyo Delphi主线程与Android UI线程相同。我在哪里可以找到CallInUIThread?它在系统内吗。线程单元?我不知道。我再也没有柏林了。它是特定于Android的,所以它可以位于特定于Android的单元中。在FMX.Helpers.Android中找到它。非常感谢,它成功了