Я использую AppCompat и пытаюсь вызвать ImageView
для кнопки вверх/назад, принадлежащей панели инструментов.Почему findViewById (R.android.id.home) всегда возвращает null?
Я знаю R.android.id.home
существует, потому что я могу управлять его щелчком как пункт меню:
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
//this works
}
return super.onOptionsItemSelected(item);
}
Кроме того, всякий раз, когда я пытаюсь вызвать findViewById(android.R.id.home)
- будьте onCreate
, будь то onClick
из пользовательской кнопки - Я получаю null. Я даже получаю null, если в примере выше я звоню findViewById(item.getItemId())
.
Почему? Этот вопрос задан здесь, в большинстве случаев относительно ActionBarSherlock (который я не использую). Another time было предложено использовать:
getWindow().getDecorView().findViewById(android.R.id.home)
Но это не работает. В этом вопросе OP также говорит, что findViewById(android.R.id.home)
работает с API> 3.0, но это не так для меня. Есть идеи?
«Я знаю, что R.android.id.home существует, потому что я могу управлять своим кликом как элемент меню» - это идентификатор меню. Это не обязательно идентификатор виджета. – CommonsWare
@ Содружества, так что нет способа найти соответствующий вид? Я надеялся, что это связано с вопросом. – natario
Я понятия не имею. Любое решение, которое вы найдете, будет по своей сути ненадежным, так как * это не ваш виджет *. Это виджет реализации панели действий. Панель действий может называть ее всем, что она хочет, использовать любой класс «View», который он хочет (или даже напрямую отображать на «Canvas») и т. Д. Не допускайте или не пытайтесь контролировать внутреннюю реализацию чужой пользовательского интерфейса. – CommonsWare