Android 从片段中获取 tabLayout
Android get tabLayout from a fragment
我想知道是否有办法从片段访问 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 声明为静态并像那样访问它,或者是否有正确的方法来执行此操作。
如果我解释的不正确,我深表歉意 - Android 还是有点陌生。
将 tablayout 声明为静态变量是一种糟糕的处理方案的方法。您可以改用接口来实现此目的。 fragment 和activity 之间如何通信请查看官方link,很简单。
https://developer.android.com/training/basics/fragments/communicating.html
使用接口在片段和 activity 之间进行通信,示例
创建接口。
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onClickToEnableTab();
}
在 activity 中实施。执行代码以启用您的选项卡
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();
我想知道是否有办法从片段访问 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 声明为静态并像那样访问它,或者是否有正确的方法来执行此操作。
如果我解释的不正确,我深表歉意 - Android 还是有点陌生。
将 tablayout 声明为静态变量是一种糟糕的处理方案的方法。您可以改用接口来实现此目的。 fragment 和activity 之间如何通信请查看官方link,很简单。 https://developer.android.com/training/basics/fragments/communicating.html
使用接口在片段和 activity 之间进行通信,示例
创建接口。
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onClickToEnableTab();
}
在 activity 中实施。执行代码以启用您的选项卡
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();