Android PreferenceActivity和对话框片段

时间:2013-02-11 13:07:00

标签: android actionbarsherlock preferenceactivity

我正在开发的应用程序有一个扩展SherlockFragmentActivity的活动。我想使用首选项api,以便轻松地为活动添加首选项。由于我想支持api 8级及以上,我必须从课程SherlockPreferenceActivity扩展活动。

问题是活动需要显示一个对话框。该对话框扩展了SherlockDialogFragment。对话框的show()方法需要两个参数:FragmentManager对象和String标记。
为了获取FragmentManager对象,我习惯于调用活动的getSupportFragmentManager()方法。 SherlockPreferenceActivity缺少此方法。我尝试使用getFragmentManager(),但Eclipse说

  

DialogFragment类型中的方法show(FragmentManager,String)是   不适用于参数(FragmentManager,String)

如何显示SherlockPreferenceActivity的对话框片段?

2 个答案:

答案 0 :(得分:0)

您应该使用Shared Preferences而不是PreferenceActivity。在单独的帮助器类中声明这些引用,而不是将其扩展到Activity。这使您可以灵活地创建自定义布局。

示例:

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);
   }
}

参考您的活动

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

答案 1 :(得分:0)

尝试使用SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager()

实施例: mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");