草庐IT

Android PreferenceActivity 和对话框 fragment

coder 2023-12-06 原文

我正在开发的应用程序有一个扩展 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 PreferenceActivity 和对话框 fragment的更多相关文章

  1. Android对话框的详细介绍(提示对话框,自定义对话框) - 2

    简介:我们都知道在Android开发中,当我们的程序在与用户交互时,用户会得到一定的反馈,其中以对话框的形式的反馈还是比较常见的,接下来我们来介绍几种常见的对话框的基本使用。前置准备:(文章最后附有所有代码)我们首先先写一个简单的页面用于测试这几种Dialog(对话框)代码如下,比较简单,就不做解释了一、提示对话框(即最普通的对话框)首先我们给普通对话框的按钮设置一个点击事件,然后通过AlertDialog.Builder来构造一个对象,为什么不直接Dialog一个对象,是因为Dialog是一个基类,我们尽量要使用它的子类来进行实例化对象,在实例化对象的时候,需要将当前的上下文传过去,因为我这

  2. ruby-on-rails - ActiveRecord 与两个数据库对话? - 2

    我们最近改进了一个项目,希望将我们所有的旧数据带入新系统。问题在于架构略有不同,因此无法直接导入SQL。由于一些非规范化和数据库更改,我们需要在数据准备好导入之前对数据进行一些处理。我希望是这样的:OldUser.all.eachdo|ou|NewUser.create({:first_name=>ou.first_name:last_name=>ou.last_name:login=>ou.login:company_name=>ou.company.name})end在上面的示例中,OldUser正在从旧数据库读取数据,而NewUser正在处理新数据库。我需要两组模型(新的和旧的)

  3. ruby-on-rails - Rails 4.0 expire_fragment/缓存过期不起作用 - 2

    我一直在尝试使用Rails的缓存功能,但我无法使某些缓存片段过期,尽管它们似乎已过期。使用Rails教程站点中指出的“俄罗斯娃娃缓存”,我正在使用此配置我在release_controller.rbController中使外部缓存过期,我在其中使用expire_fragment("all_available_releases")使片段过期。我在更新、删除或添加条目的Controller的每个方法中都使用它。这是WEBrick的日志,尽管过期片段已在其中注册,但5行后过期片段被读取并使用,而这是不应该的。这个例子是在destroy调用之后。ProcessingbyReleasesCont

  4. ruby-on-rails - 如何从 Rails Observer/Model 调用 expire_fragment? - 2

    我几乎什么都试过了,但似乎无法使用来自模型的expire_fragment?我知道你不应该这样做非MVC,但肯定有很多方法可以做到。我在lib/cache_helper.rb中用我所有的过期助手创建了一个模块,在每个中只是一堆expire_fragment调用。我有我所有的/app/sweepers下的缓存清扫器设置,并有一个“includeCacheHelper”在我的应用程序Controller中,因此在通过Controller调用时应用程序工作正常。然后事情是我有一些外部守护进程,尤其是一些循环的cron任务调用一个调用特定任务的rake任务方法。此方法进行一些处理并将条目输入到

  5. ruby - 使用 Sinatra 时与数据库对话的最佳方式是什么? - 2

    据我了解,与Rails不同,Sinatra框架不提供ORM。在那种情况下,您如何与Sinatra应用程序中的数据库对话?还是Sinatra仅适用于不使用数据库的应用程序? 最佳答案 如果您使用的是Sinatra,我不推荐DataMapper足够高。我有几个Rails应用程序,其中我坚持使用ActiveRecord,并且我一直在诅咒它的缺点和设计缺陷。如果您使用Sinatra,DataMapper是一个非常实用的选择。require"rubygems"require"sinatra"require"datamapper"DataMap

  6. javascript - colorbox 中的 jquery-ui 对话框导致超出最大调用堆栈大小错误 - 2

    我正在使用jquery-ui,它的dialog功能可以在我的网络应用程序中显示模态对话框。它工作正常。在一个用例中,我在屏幕上有一个colorbox弹出窗口,一旦用户完成输入,我需要显示一个确认对话框。由于在我尝试过的所有主要浏览器上的错误处理,这里的一切实际上都有效,但我担心javascript引擎和浏览器的某些组合可能会导致什么问题。我得到的错误是调用堆栈大小溢出(Chrome将其显示为UncaughtRangeError:Maximumcallstacksizeexceeded.)。模态对话框的代码是:functionmodalDialog(dialogText,dialogTi

  7. javascript - AngularJs 中带有微调器的甜蜜警报对话框 - 2

    我正在尝试在sweetalert对话框中显示一个微调器,类似于Bootstrap模态对话框(http://jsfiddle.net/D6rD6/5/)我能想到的最接近的是这样的:SweetAlert.swal({title:'Importerrorsoccurred!',text:'',html:true,customClass:'manual-upload-errors-swal-width'});如果这不可能,那么最接近和最好的解决方案是什么? 最佳答案 原版sweetalert插件不支持,建议使用SweetAlert2插件。迁

  8. javascript - Facebook JavaScript 发送对话框,回调函数不正确 - 2

    我正在尝试在FB.ui(发送对话框)中执行回调函数。它在加载FB.ui时同时调用,但我想在按下“发送”或“取消”按钮后执行回调函数。可以实现吗?functioncallback(response){alert('messagewassent');}FB.ui({method:'send',name:'Dialog',link:'http://***.com',redirect_uri:'****',description:'***',picture:'***',to:userId},callback(response)); 最佳答案

  9. javascript - ckeditor 插件对话框选择从所选的获取描述 - 2

    我正在为CKEDITOR开发一个占位符插件,它基本上已经完成了。我遇到的问题是,我试图从对话框中的select获取值和description,但我只获取了值。包含描述和值的数组如下所示-->项目:[['description1','value1'],['description2','value2']]在return->contents->elementswithIDdropdown我有setup和提交功能。在这些函数中,我需要像从选择选项中获取名称一样获取描述。真的需要这方面的帮助,在此先感谢示例-->description1description2例子(function(){func

  10. javascript - Meteor 的 Iron Router 不关闭模态对话框 - 2

    我正在使用Meteor和IronRouter,并且我有一个模态对话框,当它被关闭时不会隐藏背景。更准确地说,我希望在单击关闭按钮后,ironrouter将重定向到另一个页面。重定向代码确实有效,但背景仍然可见。如果我删除路由线-模式将被关闭,背景也将被关闭。这是模态框的标记:×Areyousure?Thiscannotbeundone.YesNo这是切换模态对话框的按钮:Delete这是确认模式对话框的"is"按钮上的点击事件:'click#confirm-yes-button':function(){Recipes.remove(this._id);$('#confirm

随机推荐