【问题标题】:Android - Send parameters from parent activity to fragments continuouslyAndroid - 将参数从父活动连续发送到片段
【发布时间】:2014-04-05 18:32:26
【问题描述】:

我开发了一个带有 acion bar 的 android 应用程序,它有 3 个选项卡和 3 个不同的片段,我尝试将参数从父活动传递到片段,我使用了THIS qusetion 中给出的解决方案,一切都是正确的,唯一的问题是,现在活动在开始 f 应用程序时只将这个参数发送到片段一次,每次用户选择选项卡时我都需要获取这个参数,我想我应该在 onTabSelected 方法上执行此操作但不知道怎么做,有什么建议吗?

【问题讨论】:

    标签: android android-fragments android-actionbar


    【解决方案1】:

    试试这个!!

        ActionBar.TabListener tabListener = new ActionBar.TabListener() {
    
                        @Override
                        public void onTabSelected(Tab tab, FragmentTransaction ft) {
                            // Pass the position on tab click to ViewPager
                            mPager.setCurrentItem(tab.getPosition());
                            Log.d("tab selected",""+tab.getPosition());
                                        if(tab.getPosition==0)
                                     {
                                         Fragment fragA=new FrgmentA();
                                         fragA.getData("data");
                                     }
                        }
    
                        @Override
                        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                            // TODO Auto-generated method stub
                            Log.d("tab Unselected",""+tab.getPosition());
                        }
    
                        @Override
                        public void onTabReselected(Tab tab, FragmentTransaction ft) {
                            // TODO Auto-generated method stub
                            Log.d("tab Reselected",""+tab.getPosition());
                        }
                    };
    
                    // Create first Tab
                    tab = mActionBar.newTab().setText("Profile").setTabListener(tabListener);
                    mActionBar.addTab(tab);
    
                    // Create second Tab
                    tab = mActionBar.newTab().setText("Picture").setTabListener(tabListener);
                    mActionBar.addTab(tab);
    
                    // Create third Tab
                    tab = mActionBar.newTab().setText("Help").setTabListener(tabListener);
                    mActionBar.addTab(tab);
    
    
    
    
      FragmentA extends Fragment{
    
               public FragmentA(){            
              }
              @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            View view =inflater.inflate(R.layout.fragment_image, container, false);
    
    
            return view;
        }
        public void getData(String s)
    {   // your implementation
        }
    }
    

    【讨论】:

    • 这段代码制作标签并在它们之间滑动,那么如何将参数从这里传递给片段?
    【解决方案2】:

    请在创建片段实例时传递值,请看下面的代码 通过 viewpager 加载片段后,我只是传递了一个列表

    private void setupViewPager(ViewPager viewPager, List<AccountDetail> listAc) {
            Homepage.ViewPagerAdapter adapter = new Homepage.ViewPagerAdapter(getSupportFragmentManager());
            adapter.addFrag(new AllFragment("", listAc), "All");
            adapter.addFrag(new AllFragment("1", listAc), "Credit");
            adapter.addFrag(new AllFragment("2", listAc), "Debit");
            viewPager.setAdapter(adapter);
        }
    

    然后在你的片段中编写一个构造函数,就像这样

     public AFragment(String text, List<AccountDetail> manufactist) {
            mText = text;
            manufactureListAcoonut = manufactist;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 2014-09-29
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多