
我是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中以编程方式夹住选项卡所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)