2017-02-14 7 views
-1

Ich bin auf einer App arbeiten, die eine Liste der Kurse zeigt Datenbank bilden an den Benutzer mein Problem ist, wenn ich versuche, meine app laufen sie ohne zu zeigen, Fehler stürztmeine App stürzt ab, ohne einen Fehler zeigt

Ich denke, mein Problem ist, an dem Adapter, aber ich bin nicht sicher, hier meine MainActivity.java`

ist
package com.example.android.mycoursesapp; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.CheckBox; 
import android.widget.ListView; 

import com.google.firebase.database.ChildEventListener; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import java.util.ArrayList; 
import java.util.List; 

import static com.example.android.mycoursesapp.R.id.checkButton; 


public class MainActivity extends AppCompatActivity { 
    ListView mCourseListView; 
    CheckBox mCheckBox; 
    CourseAdapter courseAdapter; 
    private ChildEventListener mchildEventListener; //to read from the database 

    private FirebaseDatabase mfirebasedatabase; //to access the database 
    private DatabaseReference mCoursesDatabaseReference; //references a specific part in the database 

    private DatabaseReference mMessagesDatabaseReference; //class references a specific part of the database 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Initialize course ListView and its adapter 
     final List<Course> course = new ArrayList<>(); 
     courseAdapter = new CourseAdapter(this, R.layout.list_item, course); 
     mCourseListView.setAdapter(courseAdapter); 

     DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference(); 
     //get reference to child node 
     mDatabase.child("courses").push().setValue("Physics"); 
     mDatabase.child("courses").push().setValue("Electronics"); 
     mDatabase.child("courses").push().setValue("System Analysis"); 
     mDatabase.child("courses").push().setValue("Artificial Intelligence"); 
     mDatabase.child("courses").push().setValue("English"); 
     mDatabase.child("courses").push().setValue("Economics"); 

     mchildEventListener=new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Course course=dataSnapshot.getValue(Course.class); 
       courseAdapter.add(course); 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) {} 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) {} 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) {} 

      @Override 
      public void onCancelled(DatabaseError databaseError) {} 
     }; 
     mDatabase.addChildEventListener(mchildEventListener); 

    /*add the Value event listener to update the data in real-time 
     - displays the friendsDatabase items in a list*/ 
     //addValueEventListener(friendsDatabaseReference); 

     /*Course course=new Course(listItemTextView.getText. 
     mMessagesDatabaseReference.push().setValue(course);*/ 

     // Initialize references to views 
     mCourseListView = (ListView) findViewById(R.id.courseListView); 
     mCheckBox=(CheckBox) findViewById(checkButton); 

     //Creating Adapter object for setting to list 
     /*CourseAdapter adapter=new CourseAdapter(courseList,MainActivity.this); 
     mCourseListView.setAdapter(adapter); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.list_item, 
       listItemTextView,values); 
     mCourseListView.setAdapter(adapter);*/ 




    } 
} 

hier Course.java

package com.example.android.mycoursesapp; 

/** 
*/ 

public class Course { 
    public String courseName; 
    //private boolean checked; 
    //private boolean checked = false; 

    public Course(String courseName) { 
     this.courseName = courseName; 
     //this.checked = checked; 
    } 


    public String getCourseName() {return courseName;} 

    public void setCourseName(String courseName) { 
     this.courseName = courseName; 
    } 

    /*public void setChecked(boolean checked) {this.checked = checked;} 

    public boolean isChecked() {return checked;}*/ 

    /*public boolean isChecked() { 
     return checked; 
    } 

    public void setChecked(boolean checked) { 
     this.checked = checked; 
    }*/ 
} 

hier ist CourseAdapter.java

package com.example.android.mycoursesapp; 

import android.app.Activity; 
import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import java.util.List; 

/** 
*/ 

public class CourseAdapter extends ArrayAdapter<Course>{ 
    //private Context mContext; 
    //ArrayList<Course> mylist=new ArrayList<>(); 

    public CourseAdapter(Context context, int resource, List<Course> objects) {//resourse =list_item 
     super(context,resource,objects); 
    } 

    //@Override public int getCount() {return mylist.size();} 

    //@Override public Object getItem(int position) {return mylist.get(position).toString();} 

    /*@Override 
    public long getItemId(int position) { 
     return position; 
    } 
    public void onItemSelected(int position) {} 
    public class ViewHolder { 
     public TextView coursetext; 
     public CheckBox tick;}*/ 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.list_item, parent, false); 
     } 
     TextView courseTextView = (TextView) convertView.findViewById(R.id.listItemTextView); 

     Course course=getItem(position); 

     courseTextView.setText(course.getCourseName()); 

     /* TODO Auto-generated method stub 
     ViewHolder view = null; 
     LayoutInflater inflator = ((Activity) mContext).getLayoutInflater(); 
     if (view == null) { 
      view = new ViewHolder(); 
      convertView = inflator.inflate( R.layout.list_item, null); 
      view.coursetext= (TextView) convertView.findViewById(R.id.listItemTextView); 
      view.tick=(CheckBox)convertView.findViewById(R.id.checkButton); 
      view.tick.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
       @Override 
       public void onCheckedChanged(CompoundButton button, boolean isChecked) { 
        int getPosition = (Integer) button.getTag(); // Here 
        // we get the position that we have set for the checkbox using setTag. 
        mylist.get(getPosition).setChecked(button.isChecked()); // Set the value of checkbox to maintain its state. 

        if (isChecked) { 
         //do sometheing here 
        } 
        else 
        { 
         // code here 
        } 
       } 
      }); 
      convertView.setTag(view); 
     } else { 
      view = (ViewHolder) convertView.getTag(); 
     } 
     view.tick.setTag(position); 
     view.coursetext.setText("" + mylist.get(position).getCourseName()); 
     view.tick.setChecked(mylist.get(position).isChecked());*/ 
     return convertView; 
    } 
} 

jede Hilfe ??

edit: das ist, was das Protokoll zeigt

02-14 15:22:26.838 15829-15829/? I/art: Late-enabling -Xcheck:jni 
02-14 15:22:26.932 15829-15829/com.example.android.mycoursesapp W/System: ClassLoader referenced unknown path: /data/app/com.example.android.mycoursesapp-2/lib/arm64 
02-14 15:22:26.938 15829-15829/com.example.android.mycoursesapp I/InstantRun: Instant Run Runtime started. Android package is com.example.android.mycoursesapp, real application class is null. 
02-14 15:22:27.460 15829-15829/com.example.android.mycoursesapp W/System: ClassLoader referenced unknown path: /data/app/com.example.android.mycoursesapp-2/lib/arm64 
02-14 15:22:27.585 15829-15829/com.example.android.mycoursesapp I/FA: App measurement is starting up, version: 10084 
02-14 15:22:27.586 15829-15829/com.example.android.mycoursesapp I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE 
02-14 15:22:27.604 15829-15829/com.example.android.mycoursesapp I/FA: To enable faster debug mode event logging run: 
                     adb shell setprop debug.firebase.analytics.app com.example.android.mycoursesapp 
02-14 15:22:27.684 15829-15829/com.example.android.mycoursesapp I/HwCust: Constructor found for class android.app.HwCustAlarmManagerImpl 
02-14 15:22:27.694 15829-15829/com.example.android.mycoursesapp I/FirebaseInitProvider: FirebaseApp initialization successful 
02-14 15:22:27.887 15829-15829/com.example.android.mycoursesapp W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
02-14 15:22:28.183 15829-15829/com.example.android.mycoursesapp I/DynamiteModule: Considering local module com.google.android.gms.firebase_database:4 and remote module com.google.android.gms.firebase_database:5 
02-14 15:22:28.183 15829-15829/com.example.android.mycoursesapp I/DynamiteModule: Selected remote version of com.google.android.gms.firebase_database, version >= 5 
02-14 15:22:28.204 15829-15829/com.example.android.mycoursesapp W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000007/n/arm64-v8a 
02-14 15:22:28.273 15829-15829/com.example.android.mycoursesapp I/HwSecImmHelper: mSecurityInputMethodService is null 
02-14 15:22:28.286 15829-15829/com.example.android.mycoursesapp E/HAL: load: id=gralloc != hmi->id=gralloc 
02-14 15:22:28.301 15829-15906/com.example.android.mycoursesapp I/System: core_booster, getBoosterConfig = false 
02-14 15:22:28.333 15829-15905/com.example.android.mycoursesapp E/HAL: load: id=gralloc != hmi->id=gralloc 
02-14 15:22:28.333 15829-15905/com.example.android.mycoursesapp I/OpenGLRenderer: Initialized EGL, version 1.4 
02-14 15:22:28.338 15829-15905/com.example.android.mycoursesapp W/OpenGLRenderer: load: so=/system/lib64/libhwuibp.so 
                        dlopen failed: library "/system/lib64/libhwuibp.so" not found 
02-14 15:22:28.338 15829-15905/com.example.android.mycoursesapp W/OpenGLRenderer: Initialize Binary Program Cache: Load Failed 
02-14 15:22:28.338 15829-15905/com.example.android.mycoursesapp E/HAL: load: id=gralloc != hmi->id=gralloc 
02-14 15:22:29.325 15829-15939/com.example.android.mycoursesapp I/System: core_booster, getBoosterConfig = false 
02-14 15:22:30.704 15829-15829/com.example.android.mycoursesapp I/Process: Sending signal. PID: 15829 SIG: 9 
+2

gibt es keine Protokolle? –

+0

@ KubaŁapuszyński Ich werde meine Frage bearbeiten, um mein Protokoll zu zeigen –

+0

Mögliche Duplikate von [Meine Anwendung stürzt beim Start Android Studio] (http://StackOverflow.com/Questions/42277621/my-Application-Crashes-On-Startup-android -Studio) –

Antwort

1

Bewegung unter zwei Zeilen nach setContentView(R.layout.activity_main); Linie.

mCourseListView = (ListView) findViewById(R.id.courseListView); 
     mCheckBox=(CheckBox) findViewById(checkButton); 
+0

Ich habe getan, wie du mir gesagt hast, meine App stürzt immer noch ab, aber es zeigt mir diesen Fehler 02-14 15: 12: 56.556 15365-15365 /? E/HAL: laden: id = gralloc! = Hmi-> id = gralloc 02-14 15: 12: 56.598 15365-15447 /? E/HAL: laden: id = gralloc! = Hmi-> id = gralloc 02-14 15: 12: 56.604 15365-15447 /? E/HAL: laden: id = gralloc! = Hmi-> id = gralloc –

+0

können Sie vollständige logcat Protokolle? – Abilash

+0

okay, ich werde meine Frage noch einmal bearbeiten, um die Logs anzuzeigen –