2017-09-17 1 views
0

J'essaie d'afficher un toast personnalisé dans mon fragment. Mon code même est comme ci-dessousNullPointerException dans la fonction Fragment

public void showToastFav(){ 

     LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.correct_toast, 
       (ViewGroup) view.findViewById(R.id.toast_layout_root)); 
     ImageView ToastIconNew = (ImageView) layout.findViewById(R.id.ToastIcon); 
     TextView text = (TextView) layout.findViewById(R.id.text); 
     text.setText("Helo"); 
     //ToastIconNew.setImageDrawable(ToastIcon); 
     Toast toast = new Toast(getActivity()); 
     toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
     toast.setDuration(Toast.LENGTH_LONG); 
     toast.setView(layout); 
     toast.show(); 

    } 

J'appelle cela sur mon bouton onClick mais obtenir l'erreur appelée

java.lang.NullPointerException: Attempt to invoke virtual method 
android.view.View android.view.View.findViewById(int) 
on a null object reference 

J'ai ajouté ci-dessus fonctionnent en dehors onCreateView.

Mon XML est comme ci-dessous

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toast_layout_root" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:background="?attr/colorPrimaryDark"> 


     <ImageView 
      android:id="@+id/ToastIcon" 
      android:layout_width="@dimen/nav_but_size" 
      android:layout_height="@dimen/nav_but_size" 
      android:src="@drawable/ic_like" 
      android:layout_gravity="center_horizontal|center_vertical" 
      android:tint="?attr/TextColor" /> 
     <TextView 
      android:layout_marginLeft="15dp" 
      android:layout_marginStart="15dp" 
      android:background="?attr/List_Text" 
      android:layout_width="2dp" 
      android:layout_height="match_parent" /> 

     <TextView 
      android:id="@+id/text" 
      android:textStyle="bold" 
      android:layout_marginLeft="15dp" 
      android:layout_marginStart="15dp" 
      android:textSize="@dimen/newMainText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:gravity="start" 
      android:text="two\n newlike " 
      android:textColor="?attr/TextColor" /> 


</LinearLayout> 

Mon code complet Fragment est comme ci-dessous. J'essaye d'obtenir la solution des deux dernières heures mais je n'en ai trouvé aucune. Faites-moi savoir ce que je fais mal avec ceci. Merci

+0

S'il vous plaît poster le code de votre XML aussi. –

+0

@SachinAggarwal J'ai ajouté XML – Priya

+0

Salut, ce qui est "vue" dans la ligne qui a une erreur. S'il vous plaît poster tout le code java. –

Répondre

2

Il y avait une petite erreur dans le code. J'ai changé de vue pour getActivity et ça marche bien maintenant. nouveau code est comme ci-dessous

LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.correct_toast, 
       (ViewGroup)getActivity().findViewById(R.id.toast_layout_root)); 

Merci

3

Comme le message d'erreur vous dit, que ce soit R.id.toast_layout_root, R.id.ToastIcon ou votre variable R.id.text est null et donc l'appel de fonction n'est pas autorisé avec un null -value.

Veuillez déboguer dans votre code et regardez quelle variable est null.

Vous pouvez également consulter la documentation et voir ce que le message d'erreur spécifique signifie réellement.

+0

Comment puis-je le résoudre? Désolé, j'apprends encore Android. Merci – Priya

+0

@Priya sur quelle ligne l'erreur apparaît-elle? Ceci est important pour réduire le champ nul qui est possible. – cramopy

+0

Je reçois une erreur dans (ViewGroup) view.findViewById (R.id.toast_layout_root)); Cette ligne – Priya