在我的应用程序中有 2 个选项卡(Android 设计支持库)这是带有 ViewPagerAdapter 的 fragment :
public class ListaCanali extends Fragment {
public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 2 ;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v =inflater.inflate(R.layout.lista_canali, container,false);
//Titolo Fragment
((MainActivity) getActivity()).setActionBarTitle("Lista Canali");
//FindViewById
tabLayout = (TabLayout) v.findViewById(R.id.tabs);
viewPager = (ViewPager) v.findViewById(R.id.viewpager);
//Funzioni Tab
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return v;
}
//Adattatore Tab
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position)
{
switch (position){
case 0 : return new FragmentCanali();
case 1 : return new FragmentPreferiti();
}
return null;
}
public int getCount() {
return int_items;
}
public CharSequence getPageTitle(int position) {
switch (position){
case 0 :
return "Tutti";
case 1 :
return "Preferiti";
}
return null;
}
我希望我的应用在滑动和点击选项卡标题时刷新 fragment ,因为这不会发生,我希望你们能帮助我。
最佳答案
我确信这不是唯一/最好的方法。但这应该可以解决我遇到的问题。
请在两者中编写 refresh() 方法 FragmentCanali 和 FragmentPreferiti fragment 。
public class ListCanali extends Fragment implements OnPageChangeListener{
private MyAdapter mAdapter;
@Override
public View OnCreateView (...) {
...
if(mAdapter == null) {
mAdapter = new MyAdapter(getChildFragmentManager());
}
viewPager.setAdapter(mAdapter);
viewPager.setOnPageChangeListener(this);
...
}
...
@Override
public void OnPageSelected (int position) {
switch (position){
case 0 : ((FragmentCanali)adapter.getItem(position)).refresh();
case 1 : ((FragmentPreferiti)adapter.getItem(position)).refresh();
}
}}
如果您从具有抽象 refresh() 方法的基本 fragment 扩展这两个 fragment ,将会更清晰。
在 onPageSelected() 中,您只需调用 ((BaseFragment)adapter.getItem(position)).refresh()
关于Android ViewPager 刷新 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32435250/
我有一个Sinatra应用程序,它有一个长时间运行的进程(网络抓取工具)。我希望应用程序在爬虫运行时而不是在结束时刷新爬虫进度的结果。我已经考虑过fork请求并使用ajax做一些有趣的事情,但这是一个非常基本的单页应用程序,实际上只需要在它发生时将日志输出到浏览器。有什么建议吗? 最佳答案 更新(2012-03-21)从Sinatra1.3.0开始,您可以使用新的流式API:get'/'dostreamdo|out|out旧答案不幸的是,您没有可以简单地刷新到的流(这不适用于Rack中间件)。从路由block返回的结果可以简单地响应
我知道我可以在Turbolinks5上调用以下代码但它改变了滚动位置。有没有办法调用Turbolinks来刷新页面而不改变滚动位置?Turbolinks.visit(location.toString());这会做我想做的,但希望使用Turbolinkswindow.location.reload() 最佳答案 在调用visit之前存储当前滚动位置,然后在页面加载时滚动到该存储位置。将存储的滚动位置重置为null可确保后续页面加载不会滚动到旧位置。一种可能的实现可能是:varreloadWithTurbolinks=(functio
你如何删除你创建的对象(在数据库和内存中)每次测试后AND在每个上下文之后?(在某种情况下,相互构建测试可能是有意义的)是否有自动执行此操作的方法?我有以下问题:每个测试都会将条目保存到数据库中。下一个测试则取决于这些条目。即使我想构建依赖于其他测试的测试,我也做不到,因为测试的执行顺序是不可控的。工厂.rb:sequence(:name){|n|"purchaser#{n}"}organization_spec.rb:context"whennosupplierexists"doit"findsnoassociatedsuppliers"dopurchaser=create(:org
标准Ruby记录器(即::Logger)是否可以在每次写入后自动刷新?更新:我正在根据Howtogettimestampsinyourrubyonrailslogs设置自定义日志格式化程序:classFoodefinitialize(params={})@logger=Logger.new$stdout@logger.formatter=LogFormatter.new@logger.level=params.include?(:log)?params[:log]:Logger::INFO#...endclassLogFormatter我尝试使用来自idlefingers的建议如下:d
按照以下部分代码:driver.get"https://example.com/"element=driver.find_element:name=>"username"element.send_keys"*****"element=driver.find_element:name=>"password"element.send_keys"*****"element.submit现在重点是driver在浏览器上打开URL的时候,有时必须由用户名和密码放置的下一页脚本,未出现-导致脚本失败。一些中级页面即将到来,要求我们点击“重试按钮”或“刷新页'。因此,只要发生这种情况,脚本就会停止执
我一直在尝试使用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任务方法。此方法进行一些处理并将条目输入到
我在JS中做了一件相当简单的事情:我正在测试一个元素(基于类名)是否包含一个字符串。我认为它不起作用的原因是元素是通过与onload事件分开的HTTPS请求呈现在页面上的。(有点像嵌入式/iFrame类型的东西)。我的脚本示例:(function($){//Onlyrunonaspecificpage.if(window.location.href.indexOf("SpecificPageImRunningOn")>-1){//Waitfor3secondsbeforerunningthisscript,toallowcontenttoloadsetTimeout(function(
我是redux-form的新手,在处理onSubmit时遇到了一个奇怪的问题。当我完全按照此处的redux-form示例设置我的项目时http://redux-form.com/6.7.0/examples/syncValidation/它按预期工作。我试图根据我的需要扩展这个示例,并确认它在加载表单时按预期工作,如下所示:路由组件>表单。当我尝试在通过路由(路由组件>容器组件>表单)加载的react组件中加载表单时,问题就出现了。当我点击提交时,字段值被添加到地址栏并且表单验证不运行。我已经尝试了我能想到的一切来解决这个问题。如果替换,下面提供的代码将正常工作与在index.js中。
我有一个AJAX调用,它负责一些服务器端设置(我将其用于登录、语言切换等)。如果且仅当服务器端设置由于此调用而实际更改时,我想刷新当前页面(不重新发布POST表单数据,我们应该在POST后立即在页面上)。AJAX回调中的一个简单JS负责处理此问题:window.location.replace(window.location.toString());这很好用,直到我开始使用anchor。假设我的网址类似于http://www.mysite.com/index/list#someplace然后我执行上述以window.location.replace结尾的ajax调用,然后什么也没有发生