Android PreferenceActivity 和对话框 fragment

标签 android actionbarsherlock preferenceactivity

我正在开发的应用程序有一个扩展 SherlockFragmentActivity 的 Activity 。我想使用首选项 api 以便轻松地向 Activity 添加首选项。因为我想支持 api 级别 8 及更高级别,所以我必须从类 SherlockPreferenceActivity 扩展 Activity 。

问题是 Activity 需要显示一个对话框。该对话框扩展 SherlockDialogFragment。对话框的 show() 方法需要两个参数:一个 FragmentManager 对象和一个 String 标签。
为了获得 FragmentManager 对象,我曾经调用 Activity 的 getSupportFragmentManager() 方法。 SherlockPreferenceActivity 中缺少此方法。我尝试使用 getFragmentManager() 但 Eclipse 说

The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentManager, String)

如何显示来自 SherlockPreferenceActivity 的对话框 fragment ?

最佳答案

你应该使用 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);
   }
}

引用您的 Activity

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

关于Android PreferenceActivity 和对话框 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812602/

相关文章:

android - 如何在 React Native 中实现类似 CoordinatorLayout 的功能?

android - 将 Android 工具栏弹出菜单主题从深色更改为浅色

android - Sherlock Action 条颜色变化

android - 选项卡 Activity 中的 fragment 在旋转时丢失所有数据?

java - 如何在 Android 中使用 PreferenceScreen

android - 使用相机 Intent 拍照以纵向模式android旋转图片

java - Apache DefaultHttpClient (Android) 和 NSURLConnection (iOS) 是否会重试与旧协议(protocol)版本的失败连接?

android - Sherlock + DeviceDefault

android - 谷歌地图 V2 的 setMapType

java - PreferenceFragment 与 AppCompatActivity Android