我想知道是否有一种从片段访问tablayout的方法。
我在下面声明我的tablayout,并禁用所有标签。
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(0));
for(int i = 0; i < tabStrip.getChildCount(); i++) {
tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}
我想做的就是能够在clicklistener中的片段中启用它们。
我不确定我是否应该声明tablayout static并这样访问它,或者如果有正确的方法。
如果我不正确解释,我深表歉意 -
使用接口在片段和活动之间进行交流,以供样品
创建接口。
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onClickToEnableTab();
}
在活动中实现它。执行代码启用您的选项卡
public class Activity implement OnFragmentInteractionListener{
@Override
public void onClickToEnableTab() {
// TODO : Enable you tab layout
}
}
片段
public class YourFragment extends Fragment {
private OnFragmentInteractionListener mListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
}
然后,在onclicklistenner内部的片段中,您可以致电
mListener.onClickToEnableTab();
将tableOut声明为静态变量是处理场景的不好方法。您可以使用接口来实现此目标。请查看有关如何在片段和活动之间进行交流的官方链接,这很简单。https://developer.android.com/training/basics/fragments/communicating.html