#java #android #android-intent #onitemclicklistener
#java #Android #android-намерение #onitemclicklistener
Вопрос:
Я создаю приложение для SMS, у меня есть список контактов, я хочу иметь возможность нажимать на контакт и передавать этот номер контакта в новое действие, чтобы я мог отправить сообщение на этот контактный номер, я знаю, как мы можем передать значение элемента списка щелчков в новое действие, но почему-то яне удалось использовать этот метод Intent.putExtra в моем сценарии.
private void getContactList() {
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if ((cur != null ? cur.getCount() : 0) > 0) {
while (cur != null amp;amp; cur.moveToNext()) {
String id = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(
ContactsContract.Contacts.DISPLAY_NAME));
if (cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID " = ?", new String[] {
id
},
null);
while (pCur.moveToNext()) {
String phoneNo = pCur.getString(pCur.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i(TAG, "Name: " name);
Log.i(TAG, "Phone Number: " phoneNo);
}
pCur.close();
}
}
}
if (cur != null) {
cur.close();
}
}
Комментарии:
1. Данный вами код считывается из базы данных, где находится код щелчка элемента списка в соответствии с заголовком вашего вопроса.
2. @rahat В данный момент я на работе, и у меня нет этого кода, но пока я могу перейти к новому действию, когда я нажимаю на любой контакт,
Ответ №1:
Для этого можно использовать пакет. Вы упомянули, что каким-то образом не смогли вызвать putExtra
свое намерение, убедитесь, что это не опечатка, как и должно быть putExtras
, также убедитесь, что вы правильно создаете свое намерение, как показано ниже.
В действии, которое будет отправлять данные:
Intent intent = new Intent(getActivity(), SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("phoneNo", phoneNo);
intent.putExtras(bundle);
startActivity(intent);
Затем в принимающем действии:
Bundle bundle = getIntent().getExtras();
String number = bundle.getString("phoneNo");
Комментарии:
1. Когда я пытаюсь использовать ваш код, я получаю сообщение об ошибке «phoneNo», потому что оно недопустимо за пределами try{ }
2. Вы можете поместить код внутри своего
try{}
, для чего нуженtry{}
блок?3. Не пытайтесь {}, извините, я виноват, я пытался сказать, что «phoneNo» допустимо только в методе getContacts(), как мне использовать его снаружи? Не могли бы вы создать полный код на основе моего кода?
4. Ну, как только у вас есть номер телефона, вы можете просто реализовать приведенный выше код, чтобы добавить номер телефона в пакет, а затем использовать второй код блока кода, чтобы получить его во втором действии
5. Хорошо, я попробую это и свяжусь с вами