2016-07-09 38 views
2

ich eine Listenansicht zu machen versuchen aufzuzurufen, die Bilder und Text in einer anderen Aktivität enthält. Ich bin nicht so konzentriert in Android-Programmierung, also im Grunde wie ein Neuling in Android-Programmierung und ich habe Schwierigkeiten beim Debuggen meiner App. Bitte helfen Sie mir :)Android: Der Versuch, virtuelle Methode ‚Leeren android.widget.ListView.setAdapter (android.widget.ListAdapter)‘ auf eine Null-Objekt Referenz

Fehler:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference 
    at com.fingervoiz.app.tamla.Activity.ListDataIdntActivity.onCreate(ListDataIdntActivity.java:53) 

komplette LogCat:

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.fingervoiz.app.tamla, PID: 14968 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fingervoiz.app.tamla/com.fingervoiz.app.tamla.Activity.ListDataIdntActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2608) 
    at android.app.ActivityThread.access$800(ActivityThread.java:178) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5637) 
    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:959) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference 
    at com.fingervoiz.app.tamla.Activity.ListDataIdntActivity.onCreate(ListDataIdntActivity.java:53) 
    at android.app.Activity.performCreate(Activity.java:6092) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2608)  
    at android.app.ActivityThread.access$800(ActivityThread.java:178)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)  
    at android.os.Handler.dispatchMessage(Handler.java:111)  
    at android.os.Looper.loop(Looper.java:194)  
    at android.app.ActivityThread.main(ActivityThread.java:5637)  
    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:959)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)  

Mein Code: (Adapter)

public class ListDIDadapter extends ArrayAdapter<TamlaDataIdntModel> { 

    Context context; 
    int layoutResID; 

    ArrayList<TamlaDataIdntModel> dataToList = new ArrayList<TamlaDataIdntModel>(); 

    public ListDIDadapter(Context context, int layoutResID, ArrayList<TamlaDataIdntModel> dataToList){ 
     super(context,layoutResID,dataToList); 
     this.layoutResID = layoutResID; 
     this.context = context; 
     this.dataToList = dataToList; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View view = convertView; 
     Holder holder = null; 

     if (view == null){ 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      view = inflater.inflate(layoutResID,parent,false); 

      holder = new Holder(); 
      holder.txtFname = (TextView) view.findViewById(R.id.did_item_fullname); 
      holder.txtGender = (TextView) view.findViewById(R.id.did_item_gender); 
      holder.txtBplace = (TextView) view.findViewById(R.id.did_item_bplace); 
      holder.txtBday = (TextView) view.findViewById(R.id.did_item_bday); 
      holder.txtAddress = (TextView) view.findViewById(R.id.did_item_address); 
      holder.imgProfile = (ImageView) view.findViewById(R.id.did_item_profilepic); 
      view.setTag(holder); 
     }else { 
      holder = (Holder) view.getTag(); 
     } 

     //FILL 
     TamlaDataIdntModel dids = dataToList.get(position); 
     if(dids != null){ 
      holder.txtFname.setText(dids.get_lname()+", "+dids.get_fname()+" "+dids.get_mname()); 
      holder.txtGender.setText(dids.get_gender()); 
      holder.txtBplace.setText(dids.get_bplace()); 
      holder.txtBday.setText(dids.get_bday()); 
      holder.txtAddress.setText(dids.get_address()); 

      byte[] outImage = dids.get_dp(); 
      ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage); 
      Bitmap theImage = BitmapFactory.decodeStream(imageStream); 
      holder.imgProfile.setImageBitmap(theImage); 
     } 

     return view; 
    } 

    static class Holder{ 
     TextView txtFname; 
     TextView txtGender; 
     TextView txtBplace; 
     TextView txtBday; 
     TextView txtAddress; 
     ImageView imgProfile; 
    } 
} 

(Liste Aktivität)

public class ListDataIdntActivity extends Activity{ 

    public static final String TAG = "ListDataIdntActivity"; 

    public static final int REQUEST_CODE_ADD_COMPANY = 40; 
    public static final String EXTRA_ADDED_COMPANY = "extra_key_added_did"; 

    private ListView mListViewDID; 
    private TextView emptyTxt; 
    private Button b1; 

    private ListDIDadapter adapter; 
    private ArrayList<TamlaDataIdntModel> arryList; 
    private DataIdntDAO mDIDdao; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //Initialize View 
     mListViewDID = (ListView) findViewById(R.id.list_did); 
     emptyTxt = (TextView) findViewById(R.id.txt_empty_list_dids); 
     b1 = (Button) findViewById(R.id.back_list_did); 

     //Fill List View 
     mDIDdao = new DataIdntDAO(this); 
     List<TamlaDataIdntModel> mIdntList = mDIDdao.getAllDID(); 

     if (mIdntList != null && !mIdntList.isEmpty()){ 
      adapter = new ListDIDadapter(this,R.layout.activity_list_did,arryList); 
      mListViewDID.setAdapter(adapter); 
     }else { 
      emptyTxt.setVisibility(View.VISIBLE); 
      mListViewDID.setVisibility(View.GONE); 
     } 

    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode == REQUEST_CODE_ADD_COMPANY){ 
      if(requestCode == RESULT_OK){ 
       // add the added identity to the list and refresh the list view 
       if(data != null){ 
        TamlaDataIdntModel createdNewDID = (TamlaDataIdntModel)data.getSerializableExtra(EXTRA_ADDED_COMPANY); 
        if(createdNewDID != null){ 
         if(arryList == null){ 
          arryList = new ArrayList<TamlaDataIdntModel>(); 
          arryList.add(createdNewDID); 

          if (adapter == null){ 
           if (mListViewDID.getVisibility() != View.VISIBLE){ 
            mListViewDID.setVisibility(View.VISIBLE); 
            emptyTxt.setVisibility(View.GONE); 
           } 

           adapter = new ListDIDadapter(this,R.layout.activity_list_did,arryList); 
           mListViewDID.setAdapter(adapter); 
          }else { 

           if (arryList != null){ 

            for (Object object : arryList) { 

             adapter.insert((TamlaDataIdntModel) object, adapter.getCount()); 
            } 
           } 
           adapter.notifyDataSetChanged(); 
          } 
         } 
        } 

       } 
      } 
     } else { 
      super.onActivityResult(requestCode,resultCode,data); 
     } 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     mDIDdao.close(); 
    } 
} 

Antwort

2

Sie verpassen eine sehr wichtige Linie - setContentView(). Diese Zeile bindet das XML an die Ansicht der Aktivität und es ist die Ansicht, die für findViewById verwendet wird. Fügen Sie diese Zeile in onCreate:

@Override 
public void onCreate(Bundle state){ 
    super.onCreate(state); 
    setContentView(R.layout.name_of_the_xml); 
+0

danke, ich es gefunden. Aber, es gibt ein neues Problem auftreten -.- aber ich werde es lösen, danke für die Hilfe – gunZ333

+0

Kein Problem. Überlegen Sie, die Antwort zu akzeptieren, wenn das ursprüngliche Problem gelöst wurde. Was ist das Neue, wenn es nicht zu lang ist, kann ich versuchen, in den Kommentaren zu helfen. Wenn dies der Fall ist, stellen Sie eine neue Frage, wenn Sie sie nicht selbst beheben können. – Vucko

+0

danke, :) das neue Problem auftritt ist, werden keine Daten aus meiner Datenbank angezeigt. aber meine Datenbank hat Artikel innerhalb – gunZ333

2

Sie haben das Layout MainActivity hinzuzufügen (die die Listview enthält) vor der Verwendung findViewById()

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContent(R.layout_MAIN_LAYOUT_ACTIVITY); 
    //Initialize View 
    mListViewDID = (ListView) findViewById(R.id.list_did); 
}