Я работаю над проектом, который использует навигационный ящик.
<android.support.design.widget.NavigationView
...
app:headerLayout="@layout/home_nav_header" />
макет заголовка содержит TextView и ImageView, которые будут содержать имя пользователя и рис пользователя.
файл home_nav_header выглядит так:
<LinearLayout ...>
<ImageView
android:id="@+id/nav_drawer_user_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/nav_drawer_user_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
</LinearLayout>
В HomeActivity я задаю данные следующим образом:
import kotlinx.android.synthetic.main.home_content.*
import kotlinx.android.synthetic.main.home_nav_header.*
/...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
mPresenter = HomePresenter(this)
//Fill user name
mUser = intent.getParcelableExtra(LoginActivity.INTENT_USER)
val userName: String = mUser.firstName + " " + mUser.lastName
nav_drawer_user_name.text = userName
//Fill user image
val decodedString = Base64.decode(mUser.photoUrl, Base64.DEFAULT)
val decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.size)
val userImageDrawable = BitmapDrawable(getResources(), decodedByte)
nav_drawer_user_name.background = userImageDrawable
}
Я проверил, что userName и userImageDrawable не равны нулю.
Проблема в том, что когда я пытаюсь заполнить данные в TextView и ImageView, приложение вылетает со следующей ошибкой:
java.lang.IllegalStateException:
findViewById (R.id.nav_drawer_user_name) не должен быть нулевым
Чего мне не хватает в моем коде?