2013-03-19 21 views
0

我想用許多選項卡(如許多iPhone應用程序)使用選項卡內的片段導航來構建應用程序。我正在使用Support V4 lib。片段分頁 - 替換觸摸處理程序

所以框架是: TabActivity-> FragmentActivity->片段

在片段的活性,應用程序將調用此方法來更換一個新片段:

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; 
} 

以前的片段仍然得到了觸摸事件,我怎麼做只有新的片段得到觸摸事件?

+0

下次請寫清楚,那是一個b ***和一半編輯 – 2013-03-19 16:18:56

+0

HI。基督徒,我已編輯我的問題,請幫助,謝謝 – flybirdtt 2013-03-20 00:58:30

回答

0

我的代碼正在工作,我只是犯了一個錯誤。

在新的片段列表視圖適配器中,應用程序將啓動一個新的空片段。但我忘了它。

0

您正在註冊片段作爲該事件的處理程序,因此如果您希望它不能獲取觸摸事件,則必須取消註冊。在設置新的之前,您可以使用root.setOnTouchListener(null);來取消它。

+0

的邏輯是:AFragment-> BFragment,所以,BFragment將超過AFragment,然後我將ontouchlistener設置爲BFragment的rootview,希望可以防止點擊AFragment。但是,如果我點擊空間部分int BFragment,AFragment仍然會作出反應 – flybirdtt 2013-03-20 00:45:24