【问题标题】:How to switch to tab 2 by clicking a button in tab 1?如何通过单击选项卡 1 中的按钮切换到选项卡 2?
【发布时间】:2015-11-19 11:12:50
【问题描述】:

我有三个选项卡,选项卡 1 中的片段列表,我想将我单击的项目的位置发送到选项卡 2 中的片段 2,并让 viewpager 切换到 tab2。我正在使用一个接口将位置发送到工作正常的主要活动,调用片段二中的一个方法,将位置传递给它返回一个空指针异常,并且 viewpager 没有切换。

MainActivity 中的方法

@Override
public void respond(int i) {
    Toast.makeText(MainActivity.this,"INSIDE MAINACTIVITY AND i = "+i,Toast.LENGTH_SHORT).show();
    try {
       Bundle args = new Bundle();
        args.putInt("chapters",i);
        PhpFragment f2 = new PhpFragment();
        f2.setArguments(args);
        actionBar = getActionBar();
        actionBar.setSelectedNavigationItem(1);
        viewPager.setCurrentItem(1);

    }catch (Exception ex){
        Toast.makeText(MainActivity.this,"Error from MAIN = "+ ex.toString(),Toast.LENGTH_LONG).show();
    }
}

我的 FragmentPagerAdapter

public class FragmentPageAdapter extends FragmentPagerAdapter {
    public FragmentPageAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        switch (i){
            case 0:
                return  new JavaFragment();
            case 1:
                    return new PhpFragment();
            case 2:
                return new NetFragment();
        }
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }
}

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    如果我关注你的问题......那么你应该调查一下。

    fragments communication in view pager

    或者另一个技巧是..

    您正在使用 ViewPager,您可以利用它。您可以像这样向 ViewPager 添加标签:

    活动:

    pager.setTag("some text");  // pager is a ViewPager object
    

    然后您可以通过 ViewGroup 在片段中获取这些数据,如下所示:

    片段:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view =  inflater.inflate(R.layout.fragment_main, container, false);
    
        String result = container.getTag().toString();
        // do something with the result
    
        return view;
    

    你也可以 setTag() 到片段中的容器。

    另一种解决方案(此处未提及)是通过 SharedPreferences 发送数据,但我建议尽可能使用标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2021-11-28
      • 2019-10-13
      • 2020-10-29
      • 2018-07-31
      • 2018-07-03
      相关资源
      最近更新 更多