在delphi android中点击按钮显示第二个表单

时间:2017-02-08 14:59:12

标签: android delphi

触摸按钮和调试器调用form.show时出现错误。

  

Project AVA.apk引发了异常类EJNIException,消息为'android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。'。

UNIT2:

var  
   frmSettings: TfrmSettings;

Unit1按钮onClick事件:

procedure TfrmMain.btnSettingsClick(Sender: TObject);
begin
  frmSettings:=TfrmSettings.Create(Application);
  frmSettings.Show;
end;

1 个答案:

答案 0 :(得分:3)

您提供的代码本身不是错误原因。但是,在创建和/或显示表单期间执行的代码可能会。

您似乎正在使用/调用需要在Android UI线程上下文中运行的原生Android API。由于Delphi主线程和Android UI线程是不同的线程,因此触发错误。

为避免使用:

procedure TfrmMain.btnSettingsClick(Sender: TObject);
begin
  CallInUiThread(procedure
    begin
      frmSettings:=TfrmSettings.Create(Application);
      frmSettings.Show;  
    end);  
end;