#java #android #android_layout #android_navigation_drawer #android_navigation_view
У меня есть вот такой NavigationView Вот такой код:и вот такой header: Мне нужно в этот header в поле для имени user поставить его имя, а в поле для email поставить соответственно email Я понимаю, что все стандартно и нужно найти по id view с которым хочешь работать и установить в него TextView. Но когда я нахожу view и ставлю text, то вылетает ошибка, что такого view еще нет. Это логично т.к. NavigationView еще не открыт... Так вот вопрос. Как отследить что NavigationView уже открыт и только после этого устанавливать text в view? Если я в onCreate() нахожу и устанавливаю текст TextView tvName = (TextView) findViewById(R.id.tvName); TextView textEmail = (TextView) findViewById(R.id.textEmail); tvName.setText("test"); textEmail.setText("test"); то получаю такую ошибку в строке tvName.setText("test"); FATAL EXCEPTION: main Process: com.example.android.camera2basic, PID: 32152 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.camera2basic/com.example.android.camera2basic.activities.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference Если применять такой подход, то ошибки нет, но текст остается таким как по умолчанию NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); RelativeLayout headerView = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_mainsecond, null); TextView tvName = (TextView) headerView.findViewById(R.id.tvName); TextView textEmail = (TextView) headerView.findViewById(R.id.textEmail); tvName.setText("name"); textEmail.setText("email");
Ответы
Ответ 1
Вам надо: Получить NavigationView NavigationView nv = ...; Получить разметку его Header View header = nv.getHeaderView(0); Найти нужные поля и с ними что-то сделать TextView tv = (TextView)header.findViewById(...);
Комментариев нет:
Отправить комментарий