В своем приложении я использую CardView. При щелчке по карте открывается другое действие, для которого требуется идентификатор карты. Итак, я попытался отправить данные через намерение, которое я использую, чтобы открыть действие.
Моя проблема в том, что полученное значение в принимающем классе всегда остается 0, хотя общее значение отличается. Я ошибаюсь?
Часть адаптера:
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final int a = dataAdapter.getId();
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ChatActivity.class);
intent.putExtra("CardID", a);
context.startActivity(intent);
}
});
Второй класс, который получает значение:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chat_layout);
Intent intent = getIntent();
int cardId = intent.getIntExtra("cardID", 0);
Log.d("cardId = ", String.valueOf(cardId));
}




Если ваш dataAdapter является списком, вы можете использовать параметр позиция в onBindViewHolder().
intent.putExtra("CardID", dataAdapter.get(position));
или вы можете использовать getAdapterPosition(), только если вы используете recyclerViewAdapter
intent.putExtra("CardID", dataAdapter.get(getAdapterPosition()));
Когда вы вставляете, CardID «C» пишется в верхнем регистре, а когда вы его получаете, cardID «c» - в нижнем регистре. Это чувствительно к регистру, просто сделайте их в одном регистре, и это должно сработать.
@ user9155899 :: именно по этой причине я всегда объявляю константы для своих "дополнительных ключей" :: static final String EXTRA_CARD_ID = "ExtraCardId"; , а затем просто использую это в своем коде :: intent.putExtra(EXTRA_CARD_ID , a);
Заменить на это -
intent.getIntExtra("CardID", 0);
Заглавная буква C отсутствует.
Проверьте ответ, это ошибка символа.