2016-05-08 5 views
0

Ich verwende Picasso, um Bilder aus dem Web in das Menü meiner App zu laden. Aber jetzt habe ich ein Problem, das ich habe hier für den ganzen Tag gefangen in mein xml:view.findViewById gibt null zurück, was zu dem Fehler "Ziel muss nicht null sein" führt, indem ich Picasso verwende

</FrameLayout>`<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@android:color/transparent" 
android:clickable="true"> 
<LinearLayout 
    android:id="@+id/vGlobalMenuHeader" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:id="@+id/ivMenuUserProfilePhoto" 
     android:layout_width="@dimen/global_menu_avatar_size" 
     android:layout_height="@dimen/global_menu_avatar_size" 
     android:layout_margin="12dp" /> 

</LinearLayout> 

Hier meine Java-Datei ist:

public class MyMenuFragment extends MenuFragment { 

private ImageView ivMenuUserProfilePhoto; 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_menu, container, 
      false); 
    ivMenuUserProfilePhoto = (ImageView)view.findViewById(R.id.ivMenuUserProfilePhoto); 
    setupHeader(); 
    return setupReveal(view) ; 
} 

private void setupHeader() { 
    int avatarSize = getResources().getDimensionPixelSize(R.dimen.global_menu_avatar_size); 
    String profilePhoto = getResources().getString(R.string.user_profile_photo); 
    Picasso.with(getActivity()) 
      .load(profilePhoto) 
      .placeholder(R.drawable.img_circle_placeholder) 
      .resize(avatarSize, avatarSize) 
      .centerCrop() 
      .transform(new CircleTransformation()) 
      .into(ivMenuUserProfilePhoto); 
} 

Nun, wenn ich Führen Sie dieses Projekt aus, meldet die Konsole den Fehler "verursacht durch: java.lang.IllegalArgumentException: Target darf nicht null sein."

Ich debuggte, fand, dass die ivMenuUserProfilePhoto tatsächlich null ist, aber ich weiß nicht warum.wie kommt, dass die findviewById nicht funktioniert?

Antwort

0

Es sieht so aus, als ob Sie versehentlich an den Anfang der XML-Datei verschoben wurden und nicht an dem Ende, an dem es sein sollte. Sie haben auch ein `hinzugefügt, das auch nicht da sein muss.

es sollte also wie folgt aussehen:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@android:color/transparent" 
android:clickable="true"> 
    <LinearLayout 
     android:id="@+id/vGlobalMenuHeader" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:id="@+id/ivMenuUserProfilePhoto" 
      android:layout_width="@dimen/global_menu_avatar_size" 
      android:layout_height="@dimen/global_menu_avatar_size" 
      android:layout_margin="12dp" /> 

    </LinearLayout> 
</FrameLayout> 

Hoffe, es behebt es: D

+0

Vielen Dank! Aber es ist ein Copy-Paste-Fehler, tut mir leid – Zafir

+0

Haha, keine Sorge, jeder macht es xD – Patrick

0

getActivity() sollte nicht von onCreateView() verwendet werden, nicht vollständig mit der angebracht werden Es zurückkehren kann null, weil Fragment Aktivität. Sie sollten versuchen, setupHeader() von onAttach(Activity activity) aufrufen. Sie können diesen Referenzlink beziehen - getActivity() returns null in Fragment function.

Verwandte Themen