0

我有一個主要活動,其中包括一個SwipeRefreshLayout。該活動包含fragments從片段中禁用MainActivity SwipeRefreshLayout

我想從特定片段中禁用SwipeRefreshLayout,因爲SwipeRefreshLayout的滑動手勢會干擾片段上的ExpandableListView的滾動手勢。

爲此,我曾嘗試以下,沒有成功:

的片段,我有:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.listfragment, container, false); 

    //...... 
    expListView = (ExpandableListView) v.findViewById(R.id.expandableList); 
    final MainActivity mainAct = (MainActivity) getActivity(); 
    //....... 
    expListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
     @Override 
     public void onGroupExpand(int groupPosition) { 
      Log.d("test","Disabled"); 
      //SwipeRefreshLayout is called swipeRefreshLayout on MainActivity 
      mainAct.swipeRefreshLayout.setEnabled(false); 

     } 
    }); 

運行在此之後,我可以看到日誌消息,所以swipeRefreshLayout應設置到,但是對於SwipeRefreshLayout下拉手勢工作

+0

安置自己的活動代碼以及 –

回答

2

剛剛嘗試,如:

從你的片段(鑄造):

((MainActivity) getActivity()).disableSwipe(); 

現在,在您的活動:

private void disableSwipe(){ 
    swipeRefreshLayout.setEnabled(false); 
} 

檢查this answer更多細節

+0

好吧,我會努力,謝謝。 – codeKiller

+1

這應該有效,但我寧願使用[委託](https://developer.android.com/training/basics/fragments/communicating.html) –

+0

@LucaNicoletti的方式,我假設代表團的意思是使用界面?爲什麼界面會比這個解決方案更好?這個界面看起來很簡單,只需要很少的代碼。 – codeKiller

相關問題