Как передать значение элемента списка щелчков другому действию?

#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. Хорошо, я попробую это и свяжусь с вами