2016-05-26 10 views
1

フォームでWebブラウザーを使用しています。戻るボタンを押すと、ブラウザは閉じず(GUIの上に留まります)、アプリケーションは最初の画面に戻るまで続きます(タイトルが変更されています)戻るを押したときにBrowserComponent/WebBrowserが閉じない

関連するデバイスを(ブラウザのフォームを開いた状態で)回転させると、前のフォームが表示され、ブラウザの上にレンダリングされます。

これをAndroid 5.0でテストしましたが、シミュレータで正常に動作します。

public static void showBrowser(String id) { 
    final Form form = new Form("browser"); 
    final WebBrowser browser = new WebBrowser(); 
    form.setBackCommand(new Command(" ") { 
     @Override 
     public void actionPerformed(ActionEvent evt) { 
      //show another form 
      Login.show(); 
     } 
    }); 
    form.setLayout(new BorderLayout()); 
    browser.setURL("http://www.google.com"); 
    form.add(BorderLayout.CENTER, browser); 
    form.show(); 
} 
+1

Login.showで特定のことをしていますか?これは暗黙的に閉じるべきです –

+0

いいえ私は 'Login.show'で特定のことをしていません。私はフォームを表示する直前に特定のことをしていました。答えを確認してください。 –

答えて

0

私はこの問題は、単にブラウザのフォームを表示する前に要求を行うに関連していることが分かりました。

私は

NetworkManager.getInstance().addToQueueAndWait(request);

にこの要求を使用して要求を作る方法を持っていた私は、showBrowser(String id)に渡すことを「ID」を返します。

このリクエストを削除したところ、ブラウザは完全に機能しました。だから、回避策として、今私はその後、ハードコーディングされたリンクをブラウザのフォームを表示フォーム(form.show())を示す、私は要求を作成し、この

browser.setURL()browser.reload()

を使用してブラウザを更新します

私はそれがどのように関連しているのか分かりませんが、問題を解決しました。

+1

これはおそらくEDTをブロックしているandWaitコールに関係しています。この場合待機せずにAddToQueueを使用してみてください –

2

これを試してみてください:

final WebBrowser browser = new WebBrowser(); 
    form.setBackCommand(new Command(" ") { 
     @Override 
     public void actionPerformed(ActionEvent evt) { 
      browser.destroy(); 
      //show another form 
      Login.show(); 
     } 
    }); 
+0

'browser.destroy()'と 'browser.remove()'を試しましたが、私は同じ動作をしました。私は回避策を見つけましたが、元の問題はまだあります。だから、これを再現する方法を知っている答えをチェックしてください。 –

関連する問題