Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在表格布局中以编程方式切换选项卡_Java_Android_Android Tablayout - Fatal编程技术网

Java 在表格布局中以编程方式切换选项卡

Java 在表格布局中以编程方式切换选项卡,java,android,android-tablayout,Java,Android,Android Tablayout,我是android编程新手,当用户单击位于tab1中的按钮时,我找不到在tab1和tab2之间切换的方法。 这可能很简单,但我在我的第一个应用程序中毫无头绪。 首先,我尝试了以下方法: TabLayout.Tab tab = tabLayout.getTabAt(1); tab.select(); 它过去是可以工作的,但我改变了代码,在某个时候,它不再工作了。 我还尝试了tab.getCustomView().setSelected(true),但我得到了NullPointerExceptio

我是android编程新手,当用户单击位于tab1中的按钮时,我找不到在tab1和tab2之间切换的方法。

这可能很简单,但我在我的第一个应用程序中毫无头绪。

首先,我尝试了以下方法:

TabLayout.Tab tab = tabLayout.getTabAt(1);
tab.select();
它过去是可以工作的,但我改变了代码,在某个时候,它不再工作了。

我还尝试了
tab.getCustomView().setSelected(true),但我得到了NullPointerException。所以我签入了一个if语句if tab为null,而它不是
然后我试着

tabLayout.setScrollPosition(1,0f,true);
ViewPager viewPager = new ViewPager(mainView.getContext());
viewPager.setCurrentItem(1);
但上述解决方案都不适合我。

这是我的密码:

View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    try {
        view = inflater.inflate(R.layout.fragment_main, container, false);
        Button GoB = view.findViewById(R.id.GoB);
        final EditText USETV = view.findViewById(R.id.USETV);
        final EditText commandEV = view.findViewById(R.id.CommandTV);
        final SqlHelper db = new SqlHelper(getContext(), "myDatabase", null, 1);
        GoB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    String a = "";
                    if (USETV.getText().toString().length() > 0) {
                        a += "USE " + USETV.getText().toString() + " ;";
                    }
                    a += commandEV.getText().toString();
                    String[][] c = db.SqlQuery(a);
                    LayoutInflater factory = getLayoutInflater();
                    View resultView = factory.inflate(R.layout.fragment_result, null);
                    TableLayout tableLayout = resultView.findViewById(R.id.ResultContainer);
                    tableLayout.removeAllViews();
                    View mainView = factory.inflate(R.layout.main_activity,null);
                    TabLayout tabLayout = mainView.findViewById(R.id.tabs);
                    if (c[0].length > 0 && c[1].length > 0) {
                        TabLayout.Tab tab = tabLayout.getTabAt(1);
                        //tab.select();
                        //tab.getCustomView().setSelected(true);
                        //tabLayout.setScrollPosition(1,0f,true);
                        //ViewPager viewPager = new ViewPager(mainView.getContext());
                        //viewPager.setCurrentItem(1);
                        //
                        // do some stuff
                    }
                } catch (Exception e) {
                    showException(e);
                }
            }
        });
    } catch (Exception e) {
        showException(e);
    }
    return view;
}

TabLayout
ViewPager
属于您的
活动
,因此在
片段
中,您必须调用
活动
函数来切换选项卡

以下是一个例子:

public class MyActivity extends Activity {
    private TabLayout mTabLayout;
    private ViewPager mViewPager;

    @Override
    public onCreate(...) {
        MyFrament myFragment = new MyFragment(this);
        // Add fragment to Viewpager ...
        // Attach ViewPager to TabLayout ...
    }

    public void switchTab(int index) {
        // Check index ...
        mViewPager.setCurrentItem(index);
    }
}
然后


希望这有帮助

尝试将这两行放在按钮的处理程序中:

ActionBar actionBar = (ActionBar)getActivity().getActionBar();
actionBar.setSelectedNavigationItem(1);
  • 右键单击您的包名称

  • 新建>活动>选项卡活动单击确定

  • 选择您想要的布局名称,例如(Example.java)

  • 选择导航样式为“操作栏选项卡”(即选项2),然后单击“完成”

  • 5.创建两个新片段

    6.转到此处的java文件Example.java

  • 打开Example.java文件后,将blow代码粘贴到
  • SectionsPagerAdapter扩展碎片页雷达

    公共部分SpagerAdapter(碎片管理器fm){


    非常感谢。但是McContext不可见。所以我使用了getContext(),它已经设置好了。我没有机会测试你的解决方案,因为我在android文档中看到ActionBar在android.support.v7中,我正在寻找兼容性。
    ActionBar actionBar = (ActionBar)getActivity().getActionBar();
    actionBar.setSelectedNavigationItem(1);
    
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
    
            // getItem is called to instantiate the fragment for the given page.
    
            // Return a PlaceholderFragment (defined as a static inner class below).
    
            switch(position){
    
    
                case 0:
    
                    return new Chats();
    
                case 1:
    
                    return new Status();
    
                case 2:
    
                    return new Call();
            }
    
            return PlaceholderFragment.newInstance(position + 1);
        }
    
        @Override
    
        public int getCount() {
    
            // Show 3 total pages.
    
            return 3;
        }
    }