Показать вторую форму по нажатию кнопки в Delphi Android
Поднимите ошибку, когда я нажму кнопку и вызову отладчика form.show.
Проект AVA.apk поднял класс исключения EJNIException с сообщением "android.view.ViewRootImpl$CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может касаться его представлений".
Модуль 2:
var
frmSettings: TfrmSettings;
Событие onClick кнопки Unit1:
procedure TfrmMain.btnSettingsClick(Sender: TObject);
begin
frmSettings:=TfrmSettings.Create(Application);
frmSettings.Show;
end;
1 ответ
Код, предоставленный вами, сам по себе не является причиной ошибки. Однако код, который выполняется во время создания и / или показа вашей формы, может.
Вы, кажется, используете / вызываете нативные Android API, которые должны работать в контексте потока пользовательского интерфейса Android. Поскольку основной поток Delphi и поток пользовательского интерфейса Android - это разные потоки, вы вызываете ошибку.
Чтобы избежать этого, используйте:
procedure TfrmMain.btnSettingsClick(Sender: TObject);
begin
CallInUiThread(procedure
begin
frmSettings:=TfrmSettings.Create(Application);
frmSettings.Show;
end);
end;