0

バックグラウンド

ページ間を移動するために使用される viewPager と tabHost があります。

場合によっては、viewPager 内のフラグメントがナビゲートを禁止し、フラグメントで行われた変更が取り消されることをユーザーに確認するダイアログを表示することさえあります。

ユーザーが確認した場合はナビゲートを許可し、そうでない場合は許可しません。

問題

ユーザーが別のタブに移動しようとしたときに通知を受け取る必要があり、(私が作成したいくつかの条件下で) それを許可/禁止します。

私が試したこと

私が見つけた唯一の機能は、切り替えを無効にする方法です。

viewPager の場合、次を使用します。

mViewPager.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(final View v, final MotionEvent event) {
        return !mIsTabsSwitchingEnabled;
    }
});

および tabHost には、次を使用します。

mTabHost.getTabWidget().setEnabled(mIsTabsSwitchingEnabled);

しかし、私が必要としているものはまったく異なります。ナビゲートを開始するイベントをキャプチャし、それを許可するかどうかを判断できるようにする必要があります。

質問

この問題を解決するにはどうすればよいですか?

ナビゲートの開始時に通知を受け取り、必要に応じてキャンセルするにはどうすればよいですか?

4

2 に答える 2

0

わかりました、次のコードを使用して今のところ解決しました。これですべてがカバーされることを願っています。

誰かがより良いかもしれない別の解決策を思いつくことができたら、それを書き留めてください.

final OnTouchListener onTouchListener = new OnTouchListener() {

    @Override
    public boolean onTouch(final View v, final MotionEvent event) {
        return isCurrentFragmentNeedTabSwitchingBlocking();
    }
};
mViewPager.setOnTouchListener(onTouchListener);
for (int i = 0; i < mTabHost.getTabWidget().getChildCount(); ++i) 
    mTabHost.getTabWidget().getChildAt(i).setOnTouchListener(tabOnTouchListener);
于 2013-02-12T12:13:37.753 に答える