2013-06-19 3 views
0

, поэтому мне хорошо с контактами. Я назначаю контакты в список и вижу их. Когда я нажимаю контакт, он запускает новое действие, которое прямо сейчас, я просто хочу отобразить ID этого контакта. Так что я сделать, это установить контакт идентификатор «set_id», и при нажатии на контакт, он называет «get_id», присваивает идентификатор ContactId, и передает его в putextra ...Как получить контактную информацию?

импорт Java .util.ArrayList;

импорт android.app.Activity; import android.content.CursorLoader; импорт android.content.Intent; import android.database.Cursor; импорт android.net.Uri; import android.os.Bundle; импорт android.provider.ContactsContract; import android.view.Menu; импорт android.view.View; import android.widget.AdapterView; import android.widget.ListView;

общественный класс ListViewActivity расширяет активность {

ListItemDetails Detail; 

ListView mListView; 
ArrayList<ListItemDetails> details; 
Uri contacts; 
String contactName; 
int contactPic; 
int contactId; 


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

    mListView = (ListView)findViewById(R.id.listView); 
    details = new ArrayList<ListItemDetails>(); 

    contacts = ContactsContract.Contacts.CONTENT_URI; 
    CursorLoader cursorLoader = new CursorLoader(
      this, contacts, null, null, null, null); 
    Cursor c = cursorLoader.loadInBackground(); 

    while (c.moveToNext()) { 
     contactId = c.getColumnIndex(ContactsContract.Contacts._ID); 
     contactName = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

     Detail = new ListItemDetails(); 
     Detail.setImage(R.drawable.ic_launcher); 
     Detail.setName(contactName); 
     Detail.set_id(contactId); 
     details.add(Detail); 

    } 
    c.close(); 

    mListView.setAdapter(new CustomListAdapter(details, this)); 
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 

      Intent i = new Intent(ListViewActivity.this, ContactDetails.class); 
      i.putExtra("contactId", contactId); 
      startActivity(i); 
     } 
    }); 
} 

теперь, в новой деятельности, я просто хочу, чтобы отобразить идентификатор контакта сейчас (еще учусь). Поэтому я вызываю Bundle getInt, присваиваю значение int «contactId» и отображает это на экране ... и независимо от того, какой контакт я выбираю, я показываю, что id = 0. Что я делаю неправильно? Вот вторая деятельность:

импорт android.app.Activity; import android.os.Bundle; import android.widget.TextView;

общественного класса ContactDetails расширяет активность {

int contactId; 

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

    Bundle extras = new Bundle(); 
    contactId = extras.getInt("contactId"); 

    TextView contactName = (TextView)findViewById(R.id.contactName); 

    contactName.setText("You clicked " + contactId); 
} } 

Т.Л., д-р, независимо от того, что контакт я выбираю в моем ListView, он не говорит, что контакт ID = 0, то почему?

ответ

0
Bundle extras = new Bundle(); 

, когда вы делаете это создать новый пакет с именем статистов, а не дополнительные услуги, которые вы добавили в activivty.

вместо попробовать:

contactId = getIntent().getIntExtra("contactId",0); 
+0

Спасибо так много. Я не смогу попробовать до сегодняшнего вечера, но если это сработает, я обязательно проверю ваш ответ. еще раз спасибо! – Psest328

+0

Я смог проверить его сейчас ... и теперь, когда я нажимаю на контакт, независимо от того, какой из них (у меня есть 5 в эмуляторе), он говорит, что я нажал ID # 8 – Psest328

+0

да, contactId = c.getColumnIndex (ContactsContract.Contacts._ID); вы читаете в contactId ColumnIndex, а не Id – Raanan

Смежные вопросы