2014-06-30 3 views
0

그럼에도이 코드의 연락처 부분에서 작업하고 있습니다. 나는 내 파일을 과시 할 시간이라고 판단했다. 연락처 목록에서 3 개의 연락처를 선택하고 해당 연락처의 이름과 번호를 화면에 표시하려고합니다. 나는 그 중 한 명을 일하게 할 수 있지만, 두 번째 연락처를 선택하자마자 두 번째 연락처의 정보가 비어있는 동안 첫 번째 연락처의 이름과 번호가 두 번째 연락처의 이름과 번호로 변경됩니다. 어떻게해야 내가 어디에 있어야하는지 알 수 있습니다. 여기 코드는 다음과 같습니다내 앱에 둘 이상의 연락처를 표시하는 데 약간의 어려움이 있습니다.

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class contacts extends Activity { 

TextView num1, num2, num3, name1, name2, name3; 
Button saveNums, pick1Btn, pick2Btn, pick3Btn; 
Context c = this; 
private final static int REQUEST_CONTACTPICKER = 1; 
public static String filename = "sharedString"; 
SharedPreferences prefs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.contactsettings_layout); 
    prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    uiBinder(); 
    btnManger(); 
} 

public void uiBinder(){ 
    name1 = (TextView) findViewById(R.id.iceName1); 
    name2 = (TextView) findViewById(R.id.iceName2); 
    name3 = (TextView) findViewById(R.id.iceName3); 
    num1 = (TextView) findViewById(R.id.iceNum1); 
    num2 = (TextView) findViewById(R.id.iceNum2); 
    num3 = (TextView) findViewById(R.id.iceNum3); 
    saveNums = (Button) findViewById(R.id.saveICEBtn); 
    pick1Btn = (Button) findViewById(R.id.contactPickBtn); 
    pick2Btn = (Button) findViewById(R.id.contact2PickBtn); 
    pick3Btn = (Button) findViewById(R.id.contact3PickBtn); 
} 

private void selectContact() 
{ 
    // This intent will fire up the contact picker dialog 
    Intent intent = new Intent(Intent.ACTION_PICK, 
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
    startActivityForResult(intent, REQUEST_CONTACTPICKER); 
} 
public void btnManger(){ 

    pick1Btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      selectContact(); 
     } 
    }); 

    pick2Btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      selectContact(); 
     } 
    }); 

    pick3Btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      selectContact(); 
     } 
    }); 
} 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 

    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
     case (1) : 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name1.setText("Contact name: " + name); 
       num1.setText("Contact number: " + number); 
      } 
      break; 
     case (2): 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name2.setText("Contact name: " + name); 
       num2.setText("Contact number: " + number); 
      } 
      break; 
     case (3): 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name3.setText("Contact name: " + name); 
       num3.setText("Contact number: " + number); 
      } 
      break; 
    } 
} 
} 

다시 한 번 감사드립니다, - ALX

답변

1
다음

코드 내가 같은 메서드를 호출 한의 onclick 핸들러가 아닌 3이 될하기 위해 온 클릭을 변경하는 것을 제외하고는 BTN를 사용 요청 코드를 보내려는 ID로, 귀하의 스위치 케이스에서 확인하십시오.

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class contacts extends Activity { 

TextView num1, num2, num3, name1, name2, name3; 
Button saveNums, pick1Btn, pick2Btn, pick3Btn; 
Context c = this; 
public static String filename = "sharedString"; 
SharedPreferences prefs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.contactsettings_layout); 
    prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    uiBinder(); 
    btnManger(); 
} 

public void uiBinder(){ 
    name1 = (TextView) findViewById(R.id.iceName1); 
    name2 = (TextView) findViewById(R.id.iceName2); 
    name3 = (TextView) findViewById(R.id.iceName3); 
    num1 = (TextView) findViewById(R.id.iceNum1); 
    num2 = (TextView) findViewById(R.id.iceNum2); 
    num3 = (TextView) findViewById(R.id.iceNum3); 
    saveNums = (Button) findViewById(R.id.saveICEBtn); 
    pick1Btn = (Button) findViewById(R.id.contactPickBtn); 
    pick2Btn = (Button) findViewById(R.id.contact2PickBtn); 
    pick3Btn = (Button) findViewById(R.id.contact3PickBtn); 
} 

public void btnManger(){ 

    View.OnClickListener click = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
    // This intent will fire up the contact picker dialog 
    Intent intent = new Intent(Intent.ACTION_PICK, 
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
    startActivityForResult(intent, view.getId()); 
     } 
    }; 

    pick1Btn.setOnClickListener(click); 

    pick2Btn.setOnClickListener(click); 

    pick3Btn.setOnClickListener(click); 
} 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 

    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
     case (R.id.contactPickBtn) : 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name1.setText("Contact name: " + name); 
       num1.setText("Contact number: " + number); 
      } 
      break; 
     case (R.id.contactPick2Btn): 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name2.setText("Contact name: " + name); 
       num2.setText("Contact number: " + number); 
      } 
      break; 
     case (R.id.contactPick3Btn): 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor cursor = getContentResolver().query(contactData, null, null, null, null); 
       cursor.moveToFirst(); 
       String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup.DISPLAY_NAME)); 
       String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       name3.setText("Contact name: " + name); 
       num3.setText("Contact number: " + number); 
      } 
      break; 
    } 
} 
} 

PS 이걸 브라우저에서 여기 써야만합니다. 이해할 수는 있지만 충분히 이해할 수 있어야합니다.

+0

지금 당장 나는이 사건을 올바르게 수행하는 방법을 알아 내려고 노력하고 있습니다. peachy하지만 pick # Btn.getID()의 모든 것에 대해 상수 표현이 필요하다는 오류가 있습니다. – CodeMonkeyAlx

+0

내가 가진 스크래치. R.id.buttonIdHere와 동일하게 작동합니다. 고마워요! :) – CodeMonkeyAlx

+0

대부분 환영합니다 :) –

관련 문제