0

タブ内のフラグメント ナビゲーションを使用して、(多くの iPhone アプリのように) 多くのタブを持つアプリを構築しようとしています。Support V4 lib を使用しています。

したがって、フレームワークは次のとおりです。TabActivity->FragmentActivity->Fragments

フラグメント アクティビティで、アプリはこのメソッドを呼び出して、新しいフラグメントを置き換えます。

public void updateFragment(Fragment fragment) { 

    final FragmentTransaction transaction = fragmentManager
            .beginTransaction();
    transaction.replace(R.id.fragment_layout, fragment, nTag);
    transaction.addToBackStack(null);
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    transaction.commit();
}

...そして、新しいフラグメントでは、ルート ビューにも OnTouchEvent を処理するように要求します。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View root = inflater.inflate(R.layout.fragment_shopfilter, container,
            false);
    root.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });

    return root;
}

前のフラグメントはまだタッチ イベントを取得しますが、新しいフラグメントだけがタッチ イベントを取得するにはどうすればよいですか?

4

2 に答える 2

0

私のコードは機能していますが、間違いを犯しました。

新しいフラグメント リストビュー アダプターでは、アプリは新しい空のフラグメントを開始します。しかし、私はそれを忘れました。

于 2013-03-20T06:51:46.227 に答える
0

そのイベントのハンドラーとしてフラグメントを登録しているため、タッチ イベントを取得したくない場合は、登録を解除する必要があります。root.setOnTouchListener(null);新しいものを設定する前に、を使用して設定を解除できます。

于 2013-03-19T16:20:44.053 に答える