0

私は、ios と android の両方でアプリを構築するために、titanium appecelerator を使用しています。

次のコードを使用して、タブ グループを作成し、それにタブを追加します。

  var localTabGroup = Ti.UI.createTabGroup();

  var planTab = Ti.UI.createTab({
            title : NYC.Common.StringConstant.TAB_TITLE_PLAN,
            icon : NYC.Common.ResourcePathConstant.IMG_TAB_PLAN,
            window : planTabWin

        });

   localTabGroup.open();

そして、次の関数を呼び出してウィンドウを作成し、タブに追加します

 addWindowToTabGroup : function(window) {

        tabGroup.activeTab.open(window, {
            animated : true
        });
    },

現在、タブのスタックからウィンドウを削除する必要があることがよくあります(例:Androidの戻るボタンまたはiOSのナビゲーションバーに戻る)

これまで、 window.close() を使用して、スタックからウィンドウを削除しました。ただし、常に次のような警告が表示されます。

[ERROR][TiBaseActivity(  378)] (main) [3320,4640528] Layout cleanup.

[WARN][InputManagerService(   62)] Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@406e4258

正しいアプローチに従っているかどうか疑問に思っていましたか?または、タブからウィンドウを削除するより良い方法はありますか?

ありがとう。

4

1 に答える 1

1

iOS と Android ではタブの動作が大きく異なります。Android では、タブはウィンドウのスタックを維持しません。open を呼び出すと、新しい重いウィンドウが開きます。デフォルトでは、タブ グループ全体がカバーされます。これは iOS とは大きく異なりますが、Android アプリケーション用です。ユーザーは常に [戻る] ボタンを使用してウィンドウを閉じ、タブ グループに戻ります。

これは、ネイティブの Android が既にウィンドウを削除しているにもかかわらず、ウィンドウを削除しようとしているために発生している可能性があります。こちらのドキュメントAndroid 実装ノートをご覧ください。

この問題を完全に解消するには、TabGroup を使用せずにモーダル ウィンドウを開きます。これは、よりクロス プラットフォームになります。

addWindowToTabGroup : function(window) {

    window.open({
        modal : true,
        animated : true
    });
}

これにより、両方のプラットフォームで同じように動作するモーダル ウィンドウが開き、ネイティブの戻るボタン機能で簡単に処理できます。

于 2012-10-09T17:32:53.627 に答える