2016-09-03 3 views
1

Я разрабатываю приложение, в котором, когда пользователь вводит свой идентификатор почты, я сохраняю это в переменной и переходит к другому действию. Для этого я использую панель навигации, в том, что от основной деятельности я передаю письмо на другой вид деятельности, который internShips.In, что я передаю значение, используя свою позицию: как показано на рисунке ниже:Передача значения от активности к адаптеру

  mDrawerList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
           long arg3) { 
if(position==3) 
      { 
       Intent intent = new Intent(MainActivity.this,internships.class) ; 
       intent.putExtra("email", email); 
       startActivity(intent); 
      } 

В стажировки Я использую recyclerview .IN, что если я нажимаю на любой элемент будет начать другой activity.For щелкнув элемент даю нажав опцию в internshipAdapter, как показано ниже:

holder.itemView.setOnClickListener (new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 


      Intent i = new Intent(v.getContext(), InternShipsDetails.class); 

      String email = i.getStringExtra("email"); 
      i.putExtra("email" , email); 
      v.getContext().startActivity(i); 

     } 
    }); 
} 

и в другой деятельности, я получаю значение используя намерение, как показано ниже:

Intent intent = getIntent(); 
    String email=intent.getStringExtra("email"); 

Но проблема в том, что значение для электронной почты показывает null.Так, где я ошибаюсь, помогите здесь.

+4

'Струнный электронную почту = I. getStringExtra («email»); 'как здесь определяется' i'? – Shubhank

+0

Укажите в 'holder', где вы определили' i' для 'i.getStringExtra (" email ")'? –

+0

Intent i = new Intent (v.getContext(), InternShipsDetails.class) – tiya

ответ

1

Измените свой код как внутри holder onClick. Потому что вы используете intent, для которого вы меняете свою деятельность. Поэтому вам нужно использовать getIntent(), чтобы получить значение email.

Intent i = new Intent(v.getContext(), InternShipsDetails.class); 
Intent emailIntent = ((Activity)v.getContext()).getIntent(); 
String email = emailIntent.getStringExtra("email"); 
i.putExtra("email" , email); 
Log.d("###$email", email + ""); 

v.getContext().startActivity(i); 
+0

Правильно, ему также понадобится ссылка на операцию для вызова 'getIntent()' – Shaishav

+0

в getIntent, который показывает ошибку. – tiya

+1

получил это. Мы должны написать вот так: ((Activity) v.getContext()). GetIntent(); – tiya

0

Вместо Intent i = new Intent(v.getContext(), InternShipsDetails.class) использовать контекст вы должны передать к адаптеру (активность, что адаптер установлен в) и сделать так:

Intent i = new Intent(context, InternShipsDetails.class); 
Смежные вопросы