java-在TabLayout中以编程方式夹住选项卡

java-在TabLayout中以编程方式夹住选项卡,第1张

概述我是android编程的新手,当用户单击位于tab1中的按钮时,找不到在TabLayout中的tab1和tab2之间切换的方法.这可能很简单,但是我在第一个应用程序中一无所知.首先,我尝试了以下方法:TabLayout.Tabtab=tabLayout.getTabAt(1);tab.select();它曾经可以工作,但是我更改了代码,在

我是android编程的新手,当用户单击位于tab1中的按钮时,找不到在TabLayout中的tab1和tab2之间切换的方法.
这可能很简单,但是我在第一个应用程序中一无所知.
首先,我尝试了以下方法:

TabLayout.Tab tab = tabLayout.getTabAt(1);tab.select();

它曾经可以工作,但是我更改了代码,在某些时候,它不再起作用了.
我也尝试过tab.getCustomVIEw().setSelected(true);,但是我得到了NullPointerException.因此,我在if语句中检查了tab是否为null,而事实并非如此.
然后我尝试

tabLayout.setScrollposition(1,0f,true);VIEwPager vIEwPager = new VIEwPager(mainVIEw.getContext());vIEwPager.setCurrentItem(1);

但是,以上任何一种解决方案都不适合我.
这是我的代码:

VIEw vIEw;@Nullable@OverrIDepublic 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属于您的Activity,因此在Fragment中,您必须调用Activity函数来切换Tab

这是一个例子:

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);    }}

然后

public class MyFragment extends Fragment {    private Context mContext;    private button mbutton;    public MyFragment(Context context) {        mContext = context;    }    @OverrIDe    public VIEw onCreateVIEw(...) {        ...        mbutton.setonClickListener(v->{            ((MyActivity)mContext).switchTab(1);        });        ...    }}

希望对您有所帮助!

总结

以上是内存溢出为你收集整理的java-在TabLayout中以编程方式夹住选项卡全部内容,希望文章能够帮你解决java-在TabLayout中以编程方式夹住选项卡所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1092172.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存