Butterknife, как связать View из разных представлений

в моем проекте у меня есть этот случай:

@BindView(R.id.viewpager)
ViewPager viewPager;
TabLayout tabLayout;
AddParkingFragmentListener listener;



public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View inflatedView = inflater.inflate(R.layout.fragment_add_parking, container, false);

    ButterKnife.bind(this, inflatedView);

    tabLayout = (TabLayout) getActivity().findViewById(R.id.tabs);
    tabLayout.setVisibility(View.VISIBLE);

    return inflatedView;
}

где мне нужно привязать представление, которое находится в макете activity_main.xml. Я думал, что могу использовать интерфейс для отключения видимости непосредственно в MainActivity, но я также хотел бы знать, есть ли возможность связать это представление с помощью Butterknife, потому что в MainActivity у меня также есть эта проблема:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    View view = navigationView.getHeaderView(0);
    profile = (ImageView) view.findViewById(R.id.imgPro); 

    //this views are in the navigation view, how to bind using butterknife?
    logo = (ImageView) view.findViewById(R.id.logo);

    email = (TextView) findViewById(R.id.email_profile);

    ButterKnife.bind(this);

}

есть ли способ сделать это или мне нужно использовать метод findViewById()?

Спасибо


person ste9206    schedule 03.05.2017    source источник


Ответы (1)


Согласно официальной документации от Butter Knife Library

Они включили методы findById, которые упрощают код, который все еще должен найти представления для View, Activity или Dialog. Он использует дженерики для вывода типа возвращаемого значения и автоматически выполняет приведение типов.

View view = LayoutInflater.from(context).inflate(R.layout.thing, null);
TextView firstName = ButterKnife.findById(view, R.id.first_name);
TextView lastName = ButterKnife.findById(view, R.id.last_name);
ImageView photo = ButterKnife.findById(view, R.id.photo);

Добавьте статический импорт для ButterKnife.findById и получайте еще больше удовольствия.

Источник: http://jakewharton.github.io/butterknife/

person Luiz Fernando Salvaterra    schedule 03.05.2017
comment
чтобы я мог использовать классический @BindView для обычных представлений и ButterKnife.findById для других? - person ste9206; 03.05.2017
comment
это устарело сейчас - person AbuQauod; 23.10.2017
comment
Согласно ответу @Jake Wharton здесь stackoverflow.com/a/45516835/5873832 мы обычно будем использовать findViewById - person Dasser Basyouni; 20.03.2018