我正在开发的应用程序有一个扩展 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开发中,当我们的程序在与用户交互时,用户会得到一定的反馈,其中以对话框的形式的反馈还是比较常见的,接下来我们来介绍几种常见的对话框的基本使用。前置准备:(文章最后附有所有代码)我们首先先写一个简单的页面用于测试这几种Dialog(对话框)代码如下,比较简单,就不做解释了一、提示对话框(即最普通的对话框)首先我们给普通对话框的按钮设置一个点击事件,然后通过AlertDialog.Builder来构造一个对象,为什么不直接Dialog一个对象,是因为Dialog是一个基类,我们尽量要使用它的子类来进行实例化对象,在实例化对象的时候,需要将当前的上下文传过去,因为我这
我们最近改进了一个项目,希望将我们所有的旧数据带入新系统。问题在于架构略有不同,因此无法直接导入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正在处理新数据库。我需要两组模型(新的和旧的)
我一直在尝试使用Rails的缓存功能,但我无法使某些缓存片段过期,尽管它们似乎已过期。使用Rails教程站点中指出的“俄罗斯娃娃缓存”,我正在使用此配置我在release_controller.rbController中使外部缓存过期,我在其中使用expire_fragment("all_available_releases")使片段过期。我在更新、删除或添加条目的Controller的每个方法中都使用它。这是WEBrick的日志,尽管过期片段已在其中注册,但5行后过期片段被读取并使用,而这是不应该的。这个例子是在destroy调用之后。ProcessingbyReleasesCont
我几乎什么都试过了,但似乎无法使用来自模型的expire_fragment?我知道你不应该这样做非MVC,但肯定有很多方法可以做到。我在lib/cache_helper.rb中用我所有的过期助手创建了一个模块,在每个中只是一堆expire_fragment调用。我有我所有的/app/sweepers下的缓存清扫器设置,并有一个“includeCacheHelper”在我的应用程序Controller中,因此在通过Controller调用时应用程序工作正常。然后事情是我有一些外部守护进程,尤其是一些循环的cron任务调用一个调用特定任务的rake任务方法。此方法进行一些处理并将条目输入到
据我了解,与Rails不同,Sinatra框架不提供ORM。在那种情况下,您如何与Sinatra应用程序中的数据库对话?还是Sinatra仅适用于不使用数据库的应用程序? 最佳答案 如果您使用的是Sinatra,我不推荐DataMapper足够高。我有几个Rails应用程序,其中我坚持使用ActiveRecord,并且我一直在诅咒它的缺点和设计缺陷。如果您使用Sinatra,DataMapper是一个非常实用的选择。require"rubygems"require"sinatra"require"datamapper"DataMap
我正在使用jquery-ui,它的dialog功能可以在我的网络应用程序中显示模态对话框。它工作正常。在一个用例中,我在屏幕上有一个colorbox弹出窗口,一旦用户完成输入,我需要显示一个确认对话框。由于在我尝试过的所有主要浏览器上的错误处理,这里的一切实际上都有效,但我担心javascript引擎和浏览器的某些组合可能会导致什么问题。我得到的错误是调用堆栈大小溢出(Chrome将其显示为UncaughtRangeError:Maximumcallstacksizeexceeded.)。模态对话框的代码是:functionmodalDialog(dialogText,dialogTi
我正在尝试在sweetalert对话框中显示一个微调器,类似于Bootstrap模态对话框(http://jsfiddle.net/D6rD6/5/)我能想到的最接近的是这样的:SweetAlert.swal({title:'Importerrorsoccurred!',text:'',html:true,customClass:'manual-upload-errors-swal-width'});如果这不可能,那么最接近和最好的解决方案是什么? 最佳答案 原版sweetalert插件不支持,建议使用SweetAlert2插件。迁
我正在尝试在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)); 最佳答案
我正在为CKEDITOR开发一个占位符插件,它基本上已经完成了。我遇到的问题是,我试图从对话框中的select获取值和description,但我只获取了值。包含描述和值的数组如下所示-->项目:[['description1','value1'],['description2','value2']]在return->contents->elementswithIDdropdown我有setup和提交功能。在这些函数中,我需要像从选择选项中获取名称一样获取描述。真的需要这方面的帮助,在此先感谢示例-->description1description2例子(function(){func
我正在使用Meteor和IronRouter,并且我有一个模态对话框,当它被关闭时不会隐藏背景。更准确地说,我希望在单击关闭按钮后,ironrouter将重定向到另一个页面。重定向代码确实有效,但背景仍然可见。如果我删除路由线-模式将被关闭,背景也将被关闭。这是模态框的标记:×Areyousure?Thiscannotbeundone.YesNo这是切换模态对话框的按钮:Delete这是确认模式对话框的"is"按钮上的点击事件:'click#confirm-yes-button':function(){Recipes.remove(this._id);$('#confirm