Заголовок навигационного блока Imageview не обновляется - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь загрузить изображение из фрагмента с помощью интерфейса обратного вызова в заголовок ящика навигации.Я отладил приложение, чтобы выяснить, что переданная строка URL-адреса действительна, но Picasso не может загрузить изображение в заголовке Imageview.

это мой код интерфейса обратного вызова:

    @Override
public void changeUserStatus(boolean isLogin, String email,String profilePhotoUrl) {
    if (isLogin) {
        logoutBTN.setText(R.string.logout);
        //Toast.makeText(MainScreenActivity.this,email,Toast.LENGTH_SHORT).show();
        userEmail.setText(email);
    }

    if (!profilePhotoUrl.equals("")) {
        Picasso.with(getApplicationContext()).load(profilePhotoUrl).placeholder(R.drawable.logo).noFade().into(navImageView);
    }
    else {
        navImageView.setImageResource(R.drawable.logo);
    }
}

thisэто макет XML для моего заголовка навигации ImageView:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="@color/White"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/profile_image"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/logo">
        </de.hdodenhof.circleimageview.CircleImageView>
        <TextView
            android:gravity="center_horizontal"
            android:id="@+id/email_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text=""
            android:textColor="@color/Black"
            android:textSize="14sp" />
        <TextView
            android:id="@+id/logoutBTN"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center_horizontal"
            android:paddingBottom="4dp"
            android:text="@string/login_txt"
            android:textAllCaps="true"
            android:textColor="@color/Black"
            android:textSize="16sp"
            android:textStyle="bold"
            android:typeface="sans" />
    </LinearLayout>
</RelativeLayout>

Я инициализировал заголовок навигации ImageView в своей деятельности onCreate ():

    navigationView.setNavigationItemSelectedListener(this);
    navigationView.inflateHeaderView(R.layout.nav_header);
    View header = navigationView.getHeaderView(0);
    userEmail = (TextView) header.findViewById(R.id.email_header);
    logoutBTN = (TextView) header.findViewById(R.id.logoutBTN);
    navImageView = (ImageView) header.findViewById(R.id.profile_image);

Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 17 октября 2018

Когда я сталкиваюсь с проблемами такого рода, я добавляю идентификатор Android в само фактическое представление навигации, а затем инициализирую переменную в NavigationView прямо перед инициализацией заголовка навигации, вот так.

View navView = (NavigationView) findViewById(R.id.nav_view);
View navHead = (NavigationHeader) navView.getHeaderView(0);
Textview tvEmail = (TextView) navHead.findViewById(R.id.userEmail); 
tvEmail.setText("theusersemail@whatever.com");
...