2017-02-08 2 views
-1

ボタンとデバッガの呼び出しform.showをタッチするとエラーが発生します。デルファイアンドロイドのボタンクリックで2番目のフォームを表示

プロジェクト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; 
+5

はあなたの問題を再現するために、ここでは十分ありません。 MCVEを提供してもらえますか? –

+0

@JerryDodge慎重に私のコードをお読みください^^^。 –

+4

私はあなたのコードを非常に慎重に読みました。私はいつも使うべき2行のコードを見ています。このフォームには何が入っていますか?この他の形式は何か他のものを呼びますか?あなたはデバイスビューを利用していますか?あなたは何も入っていない新しいプロジェクトを開始して問題を再現できますか? –

答えて

2

コードがエラーの原因ではありません。しかし、作成中に実行されるコードやフォームを表示するコードは、

あなたはAndroid UIスレッドのコンテキストで実行する必要があるネイティブAndroid APIを使用している/呼び出しているようです。 DelphiメインスレッドとAndroid UIスレッドは異なるスレッドであるため、エラーが発生しています。使用し、それを避けるために

procedure TfrmMain.btnSettingsClick(Sender: TObject); 
begin 
    CallInUiThread(procedure 
    begin 
     frmSettings:=TfrmSettings.Create(Application); 
     frmSettings.Show; 
    end); 
end; 
関連する問題