2017-02-06 4 views
-1

Beim Kompilieren meines Codes erhalte ich diesen Fehler ("java.lang.NullPointerException: Versuch, Schnittstelle aufzurufen Methode 'boolean java.util.List.add (java.lang.Object) ") und ich kann immer noch nicht verstehen warum.java.lang.NullPointerException: Versuch, die Interface-Methode aufzurufen 'boolean java.util.List.add (java.lang.Object)

Hier ist mein Fragment:

List<DataContact> selectUsers; 
AdapterFv adapter; 
RecyclerView recyclerView; 
Activity activity; 
Bitmap bitmap; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_fragment_fv, container, false); 
    recyclerView = (RecyclerView) view.findViewById(R.id.favourite_list); 

    SharedPreferences preferences = getActivity().getPreferences(0); 
    String Pname = preferences.getString("name1", ""); 
    String Pnumber = preferences.getString("number1", ""); 
    String Pimage = preferences.getString("image1", ""); 

    byte[] encodeByte = Base64.decode(Pimage, Base64.DEFAULT); 
    bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); 

    Log.v("name1", Pname); 
    Log.v("number1", Pnumber); 
    Log.v("image1", Pimage); 

    DataContact selectUser = new DataContact(); 
    selectUser.setName(Pname); 
    selectUser.setPhone(Pnumber); 
    selectUser.setThumb(bitmap); 
    selectUsers.add(selectUser); 

    adapter = new AdapterFv(getActivity(), ""); 
    LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
    llm.setOrientation(LinearLayoutManager.VERTICAL); 
    recyclerView.setLayoutManager(llm); 
    adapter.setData(selectUsers); 
    recyclerView.setAdapter(adapter); 

    return view; 
} 

Adapter:

public class AdapterFv extends RecyclerView.Adapter<AdapterFv.FvHolder> { 

public ArrayList<DataContact> arraylist; 
public FragmentActivity activity; 
public List<DataContact> selectUsers; 

public AdapterFv(FragmentActivity _activity, String s) { 
    activity = (FragmentActivity) _activity; 
    this.arraylist = new ArrayList<>(); 

} 
@Override 
public AdapterFv.FvHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 
    LayoutInflater mInflater = LayoutInflater.from(viewGroup.getContext()); 
    ViewGroup vGroupLetter = (ViewGroup) mInflater.inflate(R.layout.favourite_list, viewGroup, false); 
    FvHolder contact = new FvHolder(vGroupLetter, viewType); 
    return contact; 
} 

@Override 
public void onBindViewHolder(AdapterFv.FvHolder holder, int position) { 

    holder.setData(position, selectUsers.get(position).getName(), selectUsers.get(position).getPhone(),selectUsers.get(position).getThumb()); 

    holder.name.setText(selectUsers.get(position).getName()); 
    holder.number.setText(selectUsers.get(position).getPhone()); 

    try { 
     if (selectUsers.get(position).getThumb() != null) { 
      holder.imageViewicon.setImageBitmap(selectUsers.get(position).getThumb()); 
     } else { 
      holder.imageViewicon.setImageResource(R.drawable.image); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

@Override 
public int getItemCount() { 
    if (selectUsers != null) { 
     return selectUsers.size(); 
    } else { 
     return 0; 
    } 
} 
public void setData(List<DataContact> data) { 
    this.selectUsers = data; 
} 

public class FvHolder extends RecyclerView.ViewHolder { 
    ImageView imageViewicon, imageViewcall; 
    TextView name, number; 
    String ppname,ppnumber; 
    int pos; 
    Bitmap bitmap; 

    public FvHolder(View itemView, int viewType) { 
     super(itemView); 
     name = (TextView) itemView.findViewById(R.id.namefv); 
     number = (TextView) itemView.findViewById(R.id.nofv); 
     imageViewicon = (ImageView) itemView.findViewById(R.id.picfv); 
     imageViewcall = (ImageView) itemView.findViewById(R.id.ccbtnfv); 
    } 

    public void setData(int position, String name, String phone, Bitmap thumb) { 
     this.ppname=name; 
     this.ppnumber=phone; 
     this.bitmap=thumb; 
     this.pos=position; 
    } 
} 
} 

Logcate:

FATAL AUSNAHME: Haupt

Process: com.my.fragmentmy, PID: 9556 
                  java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference 
                   at com.my.fragmentmy.FragmentFV.onCreateView(FragmentFV.java:125) 
                   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
                   at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
                   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
                   at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
                   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
                   at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
                   at android.os.Handler.handleCallback(Handler.java:739) 
                   at android.os.Handler.dispatchMessage(Handler.java:95) 
                   at android.os.Looper.loop(Looper.java:211) 
                   at android.app.ActivityThread.main(ActivityThread.java:5371) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at java.lang.reflect.Method.invoke(Method.java:372) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740) 
+0

Es sieht nicht so aus, als ob Sie 'selectUsers' irgendwo initialisieren. –

Antwort

0

Sie haben vergessen selectUsers zu initialisieren , so wird es NullPointerException verursachen, wenn Sie es verwenden.

1

Bitte reservieren Sie dieses Array selectUsers. Es passiert, weil selectUsers nicht initialisiert ist.

selectUsers = new ArrayList<DataContact>(); // Add this line 


// Add first Item 
DataContact selectUser = new DataContact(); 
selectUser.setName(Pname);// Add you name here 
selectUser.setPhone(Pnumber); // Add you Pnumber here 
selectUser.setThumb(bitmap); // Add you bitmap here 
selectUsers.add(selectUser); 

// Add 2nd Item 
DataContact selectUser1 = new DataContact(); 
selectUser1.setName(Pname); 
selectUser1.setPhone(Pnumber); 
selectUser1.setThumb(bitmap); 
selectUsers.add(selectUser); 
+1

es ist Arbeit für mich, aber wenn ich Favorit Kontakt hinzufügen vorherige Kontakt ist automatisch entfernen ..... – Secret

+0

Wo Sie diese Zeile hinzugefügt ??? –

+0

Ich bearbeite meinen Code zeige es ... – Secret

Verwandte Themen