Android从碎片中获取毛线



我想知道是否有一种从片段访问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

最新更新