jjzjj

Android ViewPager 刷新 fragment

coder 2023-11-29 原文

在我的应用程序中有 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/

有关Android ViewPager 刷新 fragment的更多相关文章

  1. ruby - 有没有办法将 html 刷新到 Sinatra 中的线路 - 2

    我有一个Sinatra应用程序,它有一个长时间运行的进程(网络抓取工具)。我希望应用程序在爬虫运行时而不是在结束时刷新爬虫进度的结果。我已经考虑过fork请求并使用ajax做一些有趣的事情,但这是一个非常基本的单页应用程序,实际上只需要在它发生时将日志输出到浏览器。有什么建议吗? 最佳答案 更新(2012-03-21)从Sinatra1.3.0开始,您可以使用新的流式API:get'/'dostreamdo|out|out旧答案不幸的是,您没有可以简单地刷新到的流(这不适用于Rack中间件)。从路由block返回的结果可以简单地响应

  2. ruby-on-rails - 如何使用 Turbolinks 刷新页面 - 2

    我知道我可以在Turbolinks5上调用以下代码但它改变了滚动位置。有没有办法调用Turbolinks来刷新页面而不改变滚动位置?Turbolinks.visit(location.toString());这会做我想做的,但希望使用Turbolinkswindow.location.reload() 最佳答案 在调用visit之前存储当前滚动位置,然后在页面加载时滚动到该存储位置。将存储的滚动位置重置为null可确保后续页面加载不会滚动到旧位置。一种可能的实现可能是:varreloadWithTurbolinks=(functio

  3. ruby-on-rails - RSpec:在每个上下文之后刷新表/销毁对象 - 2

    你如何删除你创建的对象(在数据库和内存中)每次测试后AND在每个上下文之后?(在某种情况下,相互构建测试可能是有意义的)是否有自动执行此操作的方法?我有以下问题:每个测试都会将条目保存到数据库中。下一个测试则取决于这些条目。即使我想构建依赖于其他测试的测试,我也做不到,因为测试的执行顺序是不可控的。工厂.rb:sequence(:name){|n|"purchaser#{n}"}organization_spec.rb:context"whennosupplierexists"doit"findsnoassociatedsuppliers"dopurchaser=create(:org

  4. ruby - 可以将标准 Ruby 记录器配置为在每条消息后刷新吗? - 2

    标准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

  5. ruby - 如何使用 selenium-webdriver 在浏览器上刷新页面? - 2

    按照以下部分代码: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的时候,有时必须由用户名和密码放置的下一页脚本,未出现-导致脚本失败。一些中级页面即将到来,要求我们点击“重试按钮”或“刷新页'。因此,只要发生这种情况,脚本就会停止执

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

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

  7. 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任务方法。此方法进行一些处理并将条目输入到

  8. javascript - JS 在第一次加载时不工作 - 刷新后工作 - 2

    我在JS中做了一件相当简单的事情:我正在测试一个元素(基于类名)是否包含一个字符串。我认为它不起作用的原因是元素是通过与onload事件分开的HTTPS请求呈现在页面上的。(有点像嵌入式/iFrame类型的东西)。我的脚本示例:(function($){//Onlyrunonaspecificpage.if(window.location.href.indexOf("SpecificPageImRunningOn")>-1){//Waitfor3secondsbeforerunningthisscript,toallowcontenttoloadsetTimeout(function(

  9. javascript - redux-form onSubmit 刷新页面 - 2

    我是redux-form的新手,在处理onSubmit时遇到了一个奇怪的问题。当我完全按照此处的redux-form示例设置我的项目时http://redux-form.com/6.7.0/examples/syncValidation/它按预期工作。我试图根据我的需要扩展这个示例,并确认它在加载表单时按预期工作,如下所示:路由组件>表单。当我尝试在通过路由(路由组件>容器组件>表单)加载的react组件中加载表单时,问题就出现了。当我点击提交时,字段值被添加到地址栏并且表单验证不运行。我已经尝试了我能想到的一切来解决这个问题。如果替换,下面提供的代码将正常工作与在index.js中。

  10. javascript - 使用 windows.location.replace 刷新页面不使用 URL 中的哈希 - 2

    我有一个AJAX调用,它负责一些服务器端设置(我将其用于登录、语言切换等)。如果且仅当服务器端设置由于此调用而实际更改时,我想刷新当前页面(不重新发布POST表单数据,我们应该在POST后立即在页面上)。AJAX回调中的一个简单JS负责处理此问题:window.location.replace(window.location.toString());这很好用,直到我开始使用anchor。假设我的网址类似于http://www.mysite.com/index/list#someplace然后我执行上述以window.location.replace结尾的ajax调用,然后什么也没有发生

随机推荐