我有一项 Activity 正在加载 6 个 fragment 。 三个 fragment 中的六个具有搜索 View ,其余三个 fragment 未实现搜索 View 。
我制作了两个menu.xml,其中
现在,如果我在第一个选项卡中展开搜索 View ,然后移至第二个选项卡,搜索 View 仍会打开(我知道这是第二个选项卡的搜索 View ,因为我已经为每个 fragment 实现了 onCreateOptionMenu()),我不想要。
我想要的是当我移动到第一个 fragment 到第二个或第三个 fragment 时,搜索 View 应该折叠并且只单击搜索 View (在当前 fragment 中它应该展开)。
此外,如果我移动到第一个 fragment 到第二个、第三个和第四个(我的帐户信息 fragment ,不包含操作栏中的搜索 View ),那么在第 4 个 fragment 中我仍然在打开模式下获得搜索 View ...
我想知道的另一件事是,通过单击搜索 View ,它会展开并弹出软键盘,这是搜索 View 的默认行为(展开并打开键盘)吗?
我想在单击搜索 View 的文本(编辑文本)区域时打开键盘。
希望我清楚.... 任何建议/链接将不胜感激...
如果您需要我提供更多详细信息,请告诉我......
编辑:
应用 S.D. 的解决方案
在 2.3.6 上测试
1)当我在第一个 fragment (First Tab)上
2)在同一个 fragment 中展开后::
3)移动到下一个 fragment (Tab,保持搜索 View 打开)::
在 4.2.1 上测试::
1)当我在第一个 fragment (First Tab)上
2)在同一个 fragment 中展开后::
3)移动到下一个 fragment (Tab,保持搜索 View 打开)::
我已经在我的容器 Activity 中设置了'setIconified(true)'(从我所有 fragment 所在的地方)在下面的方法中::
@Override
public void onPageSelected(int position)
{
if (searchView!=null && !searchView.isIconified()) { //true == searchView closed
searchView.setIconified(true);
searchView.setIconified(true);
}
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onTabSelected(Tab tabposition, FragmentTransaction fragmentposition) {
if (searchView!=null && !searchView.isIconified()) { //true == searchView closed
searchView.setIconified(true);
//searchView.setIconified(true);
}
awesomePager.setCurrentItem(tabposition.getPosition());
}
最佳答案
要关闭您的SearchView,您可以使用searchview.setIconified(true)。所以在你的 fragment onPause 你可以调用:
public void onPause() { //not sure if you should use onDestroyView() instead
super.onPause();
if (!yourSearchView.isIconified()) { //true == searchView closed
yourSearchView.setIconified(true);
}
}
SearchView 的自定义行为是显示您的键盘。如果单击搜索图标,SearchView 将自动弹出,搜索文本字段将聚焦,从而自动打开键盘。但是,您应该能够删除将关闭键盘的 textview 的焦点。 check here
关于android - 如果选项卡位置发生更改或通过调用 onPageChangeListener 关闭搜索 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20771289/
如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat