2011-08-07 8 views
2

EDIT:データを保存するアラートの応答がない限り、ユーザーがタブを切り替えるのを防ぎたい。私はタブを切り替えるときにデータの変更をチェックするonTabChangedlistenerを持っています。アンドロイド:データが保存されない限り、タブスイッチを無効にする

mTabHost.setOnTabChangedListener(this); 

@Override 
    public void onTabChanged(String tabId) { 
     // TODO Auto-generated method stub 
     if (mTabHost.getCurrentTab()==1 && dataModified){ 
      AlertMessage(this, "Your data was NOT saved! Press Ok to continue, or Cancel to stay on the current screen. "); 
     } 

    }} 

onPauseを使用すると、ユーザーがOK /キャンセルに応答する前に同じ結果が得られます。

私の問題は、アラートがタブが既に切り替わっていることを示すまでに問題があることです。私は、ユーザーがOK /キャンセルを応答して、必要な操作(タブまたはスイッチタブのまま)を実行するだけです。

私はどのようにユーザーの反応を得て、タブの切り替えのみを許可できますか。あなたは、あなたがあなた自身のonBeforeTabchanged()コールバックを追加することができTabHostクラスを拡張し、setCurrentTabメソッドをオーバーライドする必要があります

おかげ

+0

「データが保存されない限り、ユーザーがタブを切り替えるのを防ぐ」 - タブを使用しないでください。よりフレンドリーなUXを提供する他のUIを使用してください。 – CommonsWare

+0

ユーザーがタブを切り替えるのを防ぐことはできません...おそらく、ontouchまたはontabchangedリスナーを使用して – jsp

+0

私は提案されたUIがユーザーに対して敵対的であると言います。あなたのタブを取り除く。無作為な開発者の中には、そのようなことを今には望んでいないので、ユーザーは何をするべきかについてはユーザーを苛立たせません。たとえば、ユーザーがタブからタブへ順番に移動して何かを編集することが期待される場合は、 'ViewFlipper'を使ってウィザードを作成します。 – CommonsWare

答えて