2017-05-30 3 views
-2

Ich nehme einen Kurs in Android-Entwicklung und damit bin ich ziemlich neu zu diesem Ganzen. Ich muss einen Kontakt über eine Absicht herstellen, die ID und den Namen des Kontakts abrufen und in einem ListView anzeigen.
Ich habe versucht, Anweisungen aus meinem Kurs zu folgen, aber ich kann es einfach nicht zum Laufen bringen. es stürzt ab, wenn ich auf den "jemanden einladen" -Button klicke.

hier ist die Actiivty:Android Contact Content Provider mit Absicht

<Button 
     android:id="@+id/button" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Invite someone" 
     android:onClick="pickContact"/> 

    <TextView 
     android:id="@+id/contactTextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="contact here" /> 

und dies ist der Code in der entsprechenden Java-Datei:

public class Event extends AppCompatActivity { 

TextView myContactTextView; 
private static int PICK_CONTACT_REQ = 0; 

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

    myContactTextView = (TextView) findViewById(R.id.contactTextView); 
} 


public void pickContact() { 
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQ); 

    onActivityResult(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    // Check which request we're responding to 
    if (requestCode == PICK_CONTACT_REQ) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      // The user picked a contact. 
      // The Intent's data Uri identifies which contact was selected. 
      ContentResolver resolver = getContentResolver(); 
      Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

      try { 
       myContactTextView.setText("Your device has these contacts"); 

       if (cursor.getCount() > 0) { 
        int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID); 
        int nameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 

        while (cursor.moveToNext()) { 
         int id = cursor.getInt(idColumn); 
         String contactName = cursor.getString(nameColumn); 

         myContactTextView.append(("\n" + id + "-" + contactName)); 
        } 
       } 
      } finally { 
       cursor.close(); 
      } 
     } 
    } 
} 
} 

kann jemand helfen?

edit: ich dieses meassage im Android Monitor:

05-30 11:05:30.539 18746-18746/com.company.reds.awesomeapp E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.company.reds.awesomeapp, PID: 18746 
                     java.lang.IllegalStateException: Could not find method pickContact(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button' 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                      at android.view.View.performClick(View.java:5207) 
                      at android.view.View$PerformClick.run(View.java:21168) 
                      at android.os.Handler.handleCallback(Handler.java:746) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5443) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
+0

definieren: * es stürzt * (wie ein Programmierer kein Benutzer) – Selvin

+0

nicht sicher, ob das, was Sie suchen, aber ich habe die Nachricht aus dem Android-Monitor im ursprünglichen Beitrag hinzugefügt. Die App schließt sich und die alte "leider" App "hat aufgehört" erscheint. – R0ede

+0

Ich dachte über logcat Protokoll ... Ausnahme ist selbsterklärend – Selvin

Antwort

0

ich es selbst gelöst. Ich habe vergessen, View View zu meinem Vorsatz

hinzuzufügen edit: unten erwähnt Ich habe View zu der PickContact() -Methode nicht die Absicht hinzugefügt.

+1

* Ich habe vergessen, Sicht zu meiner Absicht hinzufügen * ... eher 'Sicht 'als Parameter in' PickContact' Methode – Selvin

+0

Ja dein Recht. Ich habe meine Antwort bearbeitet. Ich habe immer noch ein Problem, aber ich weiß nicht, ob es eine gute Übung ist, eine neue Frage dafür zu eröffnen? – R0ede

+0

Lesen Sie zuerst die neue Ausnahme ... ** dann versuchen Sie es zu googlen ** ... wenn Sie keine ähnliche Frage finden würden (und Ausnahme/Problem ist anders als in dieser Frage), dann fragen Sie eine andere – Selvin

Verwandte Themen