6

Tôi cần sử dụng các đoạn lồng nhau cho ứng dụng của mình và vì vậy tôi muốn sử dụng getChildFragmentManager.getChildFragmentManager nâng cao ngoại lệ NoSuchMethod trên thiết bị 4.0.3 nhưng không phải trên 4.2.2

Tôi có hai thiết bị:

  • Một một thực chạy trên 4.0.3
  • Một một ảo chạy trên 4.2.2

Nó hoạt động khá tốt trên thứ hai nhưng không trên thiết bị vật lý của tôi kể từ khi cuộc gọi đến phương thức này nâng cao một ngoại lệ NoSuchMethod.

07-10 19:53:51.722: E/AndroidRuntime(29711): java.lang.NoSuchMethodError: fr.epitech.test_esi.fragments.ReservationCalendarFragment.getChildFragmentManager 

Dự án của tôi sử dụng thư viện được tham chiếu vì vậy tôi đã tải thư viện hỗ trợ Android mới nhất (từ trình quản lý SDK) và tôi đã thêm thư viện này vào cả thư viện và dự án chính.

Projects view in Eclipse

Ngoài ra tôi quyết định thành lập các phiên bản tối thiểu sdk hỗ trợ để 4.0.3 (phiên bản thiết bị thật của tôi đang chạy trên):

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="17" /> 

Đối với cả hai dự án chính và thư viện.

Nếu có ai đó có ý tưởng về những gì tôi có thể làm sai, hãy cho tôi biết.

Trả lời

9

getChildFragmentManager() chỉ khả dụng qua phân đoạn hậu thuẫn của gói hỗ trợ Android hoặc trên Cấp API 17+ cho các đoạn gốc. Do đó, nếu bạn đang cố gắng sử dụng phân đoạn gốc trên API cấp 15 hoặc 16 và bạn cũng đang cố sử dụng getChildFragmentManager(), bạn sẽ gặp phải lỗi này.

+0

Cảm ơn. Việc sử dụng Fragment từ lib thư mục ngược lại là một vấn đề, trừ khi có cách nào đó với TabListener? – nathan

+0

@nathan: 'TabListener' không liên kết với bất kỳ loại phân đoạn nào, không kể đến bản gốc. Bạn * xảy ra * để được cung cấp một 'FragmentTransaction' mà bạn có thể sử dụng, một cho các đoạn API cấp 11 nguyên gốc. Bạn không phải sử dụng 'FragmentTransaction' đó. Bạn được hoan nghênh sử dụng 'FragmentTransaction' của riêng bạn từ backport, hoặc làm một cái gì đó khác mà không liên quan đến các mảnh. – CommonsWare

+0

Điều này giải thích. Tôi chỉ thay đổi tất cả các mảnh hỗ trợ thành nguyên nhân, tôi sẽ không hỗ trợ ICS nữa, và có vẻ như tôi vẫn phải sử dụng hỗ trợ <_ < –

0

thử sử dụng android.support.v4.app.Fragment thay vì