如何在不单击Android Studio上的选项卡的情况下移动到另一个选项卡?

如何在不单击Android Studio上的选项卡的情况下移动到另一个选项卡?,android,tabs,Android,Tabs,我的主要活动是设置选项卡,并在ViewPager中显示内容。我可以通过单击选项卡导航到其他选项卡 代码: 但是,当我试图通过单击其中一个页面上的文本视图来导航到另一个选项卡时,它会给我一个错误。到目前为止我试过的是 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = i

我的主要活动是设置选项卡,并在ViewPager中显示内容。我可以通过单击选项卡导航到其他选项卡

代码:

但是,当我试图通过单击其中一个页面上的文本视图来导航到另一个选项卡时,它会给我一个错误。到目前为止我试过的是

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.profile_tab, container, false);

        ... Code Hidden ...
        // numRepos is the TextView that I have

        numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getActivity().getApplicationContext(), "num repos", Toast.LENGTH_SHORT).show();
                viewPager.setCurrentItem(2);
            }
        });


        return view;

实际上我知道这是行不通的,因为这个页面中的viewPager与MainActivity.java中的viewPager不同。如何通过单击numRepos文本视图导航到另一个选项卡?

尝试将其放入
onClick
方法:

TabActivity tabs = (TabActivity) getParent();
tabs.getTabHost().setCurrentTab(2);

尝试添加viewPager findViewById喜欢这样可能会有所帮助

 viewPager = (ViewPager) getActivity.findViewById(R.id.container);
 numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getActivity().getApplicationContext(), "num repos", Toast.LENGTH_SHORT).show();
                viewPager.setCurrentItem(2);
            }
        });

在你的片段中尝试以下内容:

ViewPager mviewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
此id将是活动布局中给出的viewpager id


那就用这个吧<代码>mviewPager.setCurrentItem(2)

MainActivity
部分创建静态方法

public static ViewPager mViewPager; //GLOBAL
public static SectionsPageAdapter pageAdapter; //GLOBAL

public static void _openITEM() // Create this static method
{
    viewPager.setCurrentItem(2);
}
然后

numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               _openITEM();
            }
        });

main活动中创建此方法-

public void navigateToPage(int i) {
        viewPager.setCurrentItem(i);
    }
然后从任何片段中像这样调用此方法-

    ((MainActivity)getActivity()).navigateToPage(2);

把你的错误日志放在其中一个框架内?在任何标签的碎片中都是什么意思?@VishvaDave只是其中一个碎片。我基本上是通过单击“ProfileTab”上的“numRepos”文本视图来移动到“GithubTab”片段,然后您需要通过getActivity()在片段中查找viewpager的dviewById。findviewbyid..然后设置当前项将工作ID您尝试了此viewpager。setCurrentItem(2,true);问题是,我的片段中没有id=viewpager的东西。viewpager仅在主活动中是的,它在活动中。但是片段可以使用包含它们的活动的任何组件。您只需要获取活动()。要查找activity的任何组件,只需复制粘贴此行并使用activity layout中的view pager id即可。检查一下。如果不起作用,请在_openITEM中询问kdid您指的是mviewpage?谢谢您的帮助。这同样有效,但我选择了另一个答案。但我真的很感激@user6792790前进!
    ((MainActivity)getActivity()).navigateToPage(2);