2013-07-25 24 views
5

Tôi đang cố gắng hiển thị DialogFragment khi tôi nhấn vào Tùy chọn ưu tiên trong Đề xuất ưu tiên. Thật không may, khi tôi gọi getFragmentManager() trong DialogFragment.show() tôi nhận được lỗi sau:Tôi làm cách nào để hiển thị Hộp thoại từ Tùy chọn ưu tiên?

Cannot resolve method 'show(android.app.FragmentManager, java.lang.String)'

Vấn đề là tôi dường như không thể refernece android.support.v4.app.FragmentManager từ đoạn này. Hoạt động phụ trách đoạn này kéo dài từ FragmentActivity, nhưng rõ ràng là không đủ. Tôi cố gắng gọi getSupportFragmentManager() là tốt, nhưng điều đó đã cho tôi lỗi này:

Cannot resolve method 'getSupportFragmentManager()'

Làm thế nào tôi có thể làm công việc này?

Dưới đây là một số mã:

gPrefAcknowledgements.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() 
{ 
    @Override 
    public boolean onPreferenceClick(Preference preference) 
    { 
     DialogAcknowledgements dialogAck = new DialogAcknowledgements(); 
     dialogAck.show(getFragmentManager(), "acknowledgements"); 
     return true; 
    } 
}); 

Trả lời

7

Xây dựng dựa trên câu trả lời của Steve, tôi cũng cần thiết lập DialogFragment để nhập từ android.app.DialogFragment (thay vì android.support.v4.app.DialogFragment). Hàm show() trong thư viện đó yêu cầu một android.app.FragmentManager, mà tôi có thể cung cấp thông qua một cuộc gọi đến getFragmentManager() như tôi đã làm trong mã mà tôi đã đăng trong câu hỏi.

+0

Xem xét để upvote/chấp nhận câu trả lời hữu ích. –

+4

Tôi muốn upvote nhưng tôi chỉ có 11 đại diện. Đó là bực bội để nói rằng ít nhất. – IAmKale

4

Hãy thử điều này:

dialogAck.show(getActivity().getFragmentManager(), "acknowledgements"); 

Bạn luôn có thể gọi Hoạt động mà giữ Fragment bình đẳng trong đó gõ nó được.

EDIT:

Tôi đã sai, PreferenceFragment không được bao gồm trong Thư viện hỗ trợ và chỉ khả dụng trong Android 3.0 trở lên. Điều này post có thể giúp để đối phó với kịch bản này.

+0

Tôi cũng đã cố gắng tạo ra lỗi giống nhau vì nó trả về android.app.FragmentManager, không phải android.support.v4.app.FragmentManager. – IAmKale

+2

getActivity(). GetSupportFragmentManager() cũng không tốt sao? Bạn có chắc là bạn đang sử dụng các thư viện hỗ trợ nhập khẩu cho Fragments và FragmentActivity của bạn? –

+0

PreferenceFragment dường như không có lớp thư viện hỗ trợ. Tôi đã thử poking xung quanh android.support.v4 nhưng không thể tìm thấy bất cứ điều gì cho nó. – IAmKale