2017-01-19 34 views
0

我有一個可以連接到Activity或父代片段的片段。這個片段有一個接口,必須由它所連接的任何人來實現。對於活動,這是一個相當簡單:onAttach方法被連接到父代片段

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    if (context instanceof Activity){ 
     Activity activity =(Activity) context; 
     try { 
      mCallback = (OnMyListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + 
       " must implement OnMyListener"); 
     } 
    } 
} 

但是,我無法設置mCallback監聽器在託管這一特定片段等片段。

+0

檢查'getParentFragment()'。如果它返回一個非空值,你在另一個'Fragment'中,你可以嘗試將它轉換爲你的界面。 –

+0

'getParentFragment()'在我的情況下返回null。有沒有添加父代片段的正確方法?我只是在我的父母片段中膨脹這個片段 –

+0

你是如何膨脹/調用孩子的片段? –

回答

0

你不能直接在兩個片段之間進行通信,它必須徹底地進行託管它的活動(並且我看到你已經實現了上半場)。

活動收到發送方的片段中的數據後,可以將其先解決接收機片段的引用,利用發送到接收器片段:

ReceiverFragment fragment = (ReceiverFragment) getSupportFragmentManager().findFragmentById(R.id.receiver_fragment_id); 

如果它爲空,那麼你需要先實例並使用fragment.setArguments(Bundle)傳遞數據,否則可以直接調用接收器片段的成員函數。

檢查:https://developer.android.com/training/basics/fragments/communicating.html

相關問題