使用意图的Android联系人内容提供商

问题描述:

我正在学习Android开发课程,因此我对这件事情相当陌生。我需要通过意图获得联系人,获取联系人的ID和姓名并将其显示在ListView中。
我试图按照我的课程说明进行操作,但我无法启动它。当我点击“邀请某人”按钮时它崩溃。

这里是Actiivty:使用意图的Android联系人内容提供商

<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" /> 

,这是在相应的Java文件的代码:

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(); 
      } 
     } 
    } 
} 
} 

有人可以帮忙吗?

编辑:我得到这个meassage在Android监视器:

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

定义:*崩溃*(如一个程序员而不是用户) – Selvin

+0

不知道,如果你正在寻找,但我从Android显示器在原岗位增加的消息。应用程序关闭,旧的“不幸”应用程序“已停止”消息弹出。 – R0ede

+0

我在想的logcat日志...异常是不言自明 – Selvin

我解决它自己。 我忘了添加查看视图到我的意图

编辑:下面提到我添加视图视图到pickContact()方法不是意图。

+1

*我忘了查看视图添加到我的意图* ......而'查看view'作为参数'pickContact'方法 – Selvin

+0

是你的权利。我编辑了我的答案。我仍然有一个问题,但我不知道是否为这个问题开了一个新问题是好的做法?所有的 – R0ede

+0

首先读取新的异常... **然后尝试谷歌它** ......如果你不会发现类似的问题(和异常/问题比这个问题,不同的)然后问另一个 – Selvin