Android 如何在片段中绑定动态视图?

Android 如何在片段中绑定动态视图?,android,android-fragments,android-view,butterknife,Android,Android Fragments,Android View,Butterknife,我在一个碎片里用黄油刀。我有两个ViewPager,它们位于header.xml中。 我不想使用findviewbyd()来实例化它们。 我尝试使用ButterKnife.bind(这个,标题),但它不允许我绑定两次。有办法解决这个案子吗 (对不起,我的表达能力差,英语不是我的母语) 是的,忘记Butterknife,使用mvvm(数据绑定):。从长远来看,这是最好的解决方案。 使用它,只需创建两个视图模型、两个视图和两个绑定即可 public View onCreateView(LayoutI

我在一个碎片里用黄油刀。我有两个ViewPager,它们位于
header.xml
中。 我不想使用
findviewbyd()
来实例化它们。 我尝试使用
ButterKnife.bind(这个,标题)
,但它不允许我绑定两次。有办法解决这个案子吗

(对不起,我的表达能力差,英语不是我的母语)


是的,忘记Butterknife,使用mvvm(数据绑定):。从长远来看,这是最好的解决方案。 使用它,只需创建两个视图模型、两个视图和两个绑定即可

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment_a, null);

        View header = LayoutInflater.from(getActivity()).inflate(R.layout.header, null);

        ButterKnife.bind(this, header);
        mPagerMenu = (ViewPager) header.findViewById(R.id.pager_menu);
        mPagerAd = (ViewPager) header.findViewById(R.id.pager_ad);

        return inflate;
    }

注意:-您一次只能绑定一个布局……

在onCreateView中,您只能绑定一个视图,因为您必须返回一个视图

ButterKnife.bind(this, inflate);
return inflate;
然后可以使用充气来声明另一个视图,如

mPagerMenu = (ViewPager) inflate.findViewById(R.id.pager_menu);
mPagerAd = (ViewPager) inflate.findViewById(R.id.pager_ad);
我不想使用findviewbyd()

通过@BindView(R.id.yourViewId)初始化视图id,在这些注释之后不再需要findViewById

  @BindView(R.id.pager_menu) ViewPager pagerMenu;
  @BindView(R.id.pager_ad) ViewPager pagerAd;

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fancy_fragment, container, false);
    ButterKnife.bind(this, view);
    // TODO Use fields...
    return view;
  }

试试这个
ButterKnife.bind(getActivity())谢谢,但我的fragment_a.xml中也有视图。如果绑定标题,那么我仍然必须使用findViewById来实例化fragment_a.xmlButterknife中的视图,并使用布局绑定所有视图,如果它找不到任何视图,那么它会给您带来一些错误……如果您想绑定两个不同的视图,那么您必须使用
findViewById()
。使用Butterknife是不可能的…………我不能将两个寻呼机放在我的主片段_a.xml中,因为它们是ListView的headerViews。无论如何,谢谢你,现在我明白了不可能同时夸大两种不同的观点
  @BindView(R.id.pager_menu) ViewPager pagerMenu;
  @BindView(R.id.pager_ad) ViewPager pagerAd;

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fancy_fragment, container, false);
    ButterKnife.bind(this, view);
    // TODO Use fields...
    return view;
  }