2014-11-18 26 views
14

A getParentFragment() từ đoạn lồng được trả lại là null. Tôi nhận ra rằng việc nhận được một null có nghĩa là đoạn được gắn với hoạt động chứ không phải vào đoạn chứa lồng nhau. Nhưng tôi rõ ràng đang lồng ghép các mảnh con bên trong đoạn mẹ bằng cách sử dụng con FragmentManager và do đó nghĩ rằng tôi không nên nhận được một null. Bạn có thể cho tôi biết những gì tôi đang thiếu?Android: Đoạn gốc của một đoạn lồng nhau

mảnh Chánh đoạn

public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener { 

    .... 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit(); 
    } 

... 

} 

Child

public class Filter extends Fragment { 

... 


    public Filter() { 
     if (getParentFragment() == null) 
      Log.d(LOG_TAG, "parent fragment is null"); 
    } 

... 

} 
+0

[Kiểm tra điều này] (http://stackoverflow.com/a/14804584/2591002) –

+0

@SweetWisher ツ, tôi đã có. Nó không giúp được gì. Tôi đã cập nhật câu hỏi của mình với thông tin này. –

+0

còn [this] (http://stackoverflow.com/a/22501774/2591002) ?? và bạn có chắc bạn nhận được * getParentFragment() * NULL ?? bởi vì có vẻ như bạn đang cố gắng phân mảnh cho người nghe đang ném một ngoại lệ –

Trả lời

24

Tôi đã gọi getParentFragment() trong constructor của đoạn con và do đó trước khi đoạn đứa trẻ được tạo ra hoàn toàn. Chuyển số getParentFragment() thành onCreateView() đã giải quyết được sự cố. Việc dịch chuyển không phải là vấn đề khi tôi gọi số getParentFragment() để kiểm tra xem đoạn gốc đã triển khai trình nghe tương tác mảnh con hay chưa.

Các vấn đề liên quan