2013-02-11 15 views
6

Ứng dụng tôi đang phát triển có hoạt động mở rộng SherlockFragmentActivity. Tôi muốn sử dụng tùy chọn api để dễ dàng thêm các tùy chọn vào hoạt động. Vì tôi muốn hỗ trợ api cấp 8 trở lên, tôi phải mở rộng hoạt động từ lớp SherlockPreferenceActivity.Ưu tiên AndroidKích thước và đoạn hội thoại

Vấn đề là hoạt động cần hiển thị hộp thoại. Hộp thoại mở rộng SherlockDialogFragment. Phương thức show() của hộp thoại cần hai thông số: đối tượng FragmentManager và thẻ String.
Để có được đối tượng FragmentManager, tôi thường gọi phương thức getSupportFragmentManager() của hoạt động. Phương thức này bị thiếu từ SherlockPreferenceActivity. Tôi cố gắng để sử dụng getFragmentManager() nhưng Eclipse nói rằng

Phương pháp hiển thị (FragmentManager, String) trong các loại DialogFragment là không áp dụng cho các đối số (FragmentManager, String)

Làm thế nào tôi có thể hiển thị đoạn hộp thoại từ SherlockPreferenceActivity?

+0

Tôi có cùng một vấn đề. Chúng ta cần lấy FragmentManager từ gói hỗ trợ nhưng không có thứ gì trong SherlockPreferenceActivity. = ( –

+1

Tôi đã giải quyết nó theo cách khác. Tạo một hoạt động khác trong cùng một packege (nhớ thêm hoạt động mới này vào tệp kê khai). Mở rộng SherlockPreferenceActivity và triển khai giao diện SharedPreferences.OnSharedPreferenceChangeListener. Hãy xem trang web dành cho nhà phát triển Android để hiểu Làm thế nào để viết hoạt động này Sử dụng hoạt động này để quản lý các sở thích của người dùng Từ hoạt động khác, khi người dùng nhấn nút cài đặt, hãy bắt đầu hoạt động ưu tiên với mục đích từ hoạt động chính bạn có thể đọc cài đặt bằng PreferenceManager. –

Trả lời

0

Bạn nên sử dụng Shared Preferences thay vì sử dụng PreferenceActivity. Khai báo các tham chiếu này trong một lớp trình trợ giúp riêng biệt thay vì mở rộng nó đến một Activity.This cho bạn sự linh hoạt của việc tạo một bố cục tùy chỉnh.

Ví dụ:

public class SharePrefManager { 
    // Shared Preferences 
    SharedPreferences pref; 

    // Editor for Shared preferences 
    Editor editor; 

    // Context 
    Context _context; 

    // Shared pref mode 
    int PRIVATE_MODE = 0; 

    // Sharedpref file name 
    private static final String PREF_NAME = "selfhelppref"; 

    //Your configurable fields 
    public static final String KEY_PREF1 = "pref1"; 
    public static final String KEY_PREF2 = "pref2"; 
    public static final String KEY_PREF3 = "pref3"; 


    public SharePrefManager(Context context){ 
     this._context = context; 
     pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
     editor = pref.edit(); 
    } 

    //Setter function for configurable field 
    public void setPref(String key, String value){ 
     editor.putString(key, value); 
    } 

    //Getter function for configurable field 
    public String getPref(String key){ 
      return editor.getString(key); 
    } 
} 

Tham khảo về hoạt động của bạn

SharePrefManager SM = new SharePrefManager(this); 
SM.setPref(SM.KEY_PREF1, "name"); 
String value = SM.getPref(SM.KEY_PREF1); 
0

Hãy thử sử dụng SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager().

Ví dụ: mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");