2017-05-30 81 views
-2

我正在學習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

回答

0

我解決它自己。 我忘了添加查看視圖到我的意圖

編輯:下面提到我添加視圖視圖到pickContact()方法不是意圖。

+1

*我忘了查看視圖添加到我的意圖* ......而'查看view'作爲參數'pickContact'方法 – Selvin

+0

是你的權利。我編輯了我的答案。我仍然有一個問題,但我不知道是否爲這個問題開了一個新問題是好的做法?所有的 – R0ede

+0

首先讀取新的異常... **然後嘗試谷歌它** ......如果你不會發現類似的問題(和異常/問題比這個問題,不同的)然後問另一個 – Selvin