0

У меня есть проблема, начиная новую деятельность с адаптером CardView, это код:Начало активности от RecycleView адаптера по щелчку

RVAdapter adapter = new RVAdapter(array_restaurants); 
recList.setAdapter(adapter); 

И после того, как в адаптере. Я установить OnClickListener

personName.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       Context context = v.getContext(); 
       System.out.println("Context"); 
       System.out.println(context.toString()); 
       Intent intent = new Intent(v.getContext(), Restaurante.class); 
       v.getContext().startActivity(intent); 
      } 
     }); 

Когда я напечатать контекст в консоли все выглядит нормально, но после Aplication перестают работать. Зачем?

спасибо. Контекст

+0

попробуйте использовать getApplicationContext() только вместо v.getContext – pratz9999

+1

Пожалуйста, покажите результат журнала cat –

+0

Привет. У меня нет доступа к этому методу в переменной v, как я могу получить к нему доступ? – Miguel

ответ

0

После много времени я нашел ответ, ответ, что те люди, представить мне помочь основать главную проблему, это решение

В MainActivity я добавил новый параметр и передать активность по отношению к адаптер, как @Meenal Шарма и @ ch3tan предложил

RVAdapter adapter = new RVAdapter(restaurantes, this); 

и в адаптере

public Adaptador(List<Restaurant> restaurants, Context context) { 
    this.restaurants = restaurants; 
    this.context = context; 
} 

и создание намерения:

Intent intent = new Intent(context, RestaurantActivity.class); 
context.startActivity(intent); 

Та часть решить ошибку, но главная ошибка, что у меня было, когда я создал новый вид деятельности с Android Studio, который создал новый вид деятельности, унаследованный от ActionBarActivity, я изменил ActionBarActivity для AppCompatActivity и все работало снова .. .

0

передачи вашей деятельности, в которой вы установили адаптер

Context mContext; 

//write this line in oncreate 

    mContext=this; 
    RVAdapter adapter = new RVAdapter(array_restaurants,mContext); 
    recList.setAdapter(adapter); 

затем в вашем использовании класса адаптера этого контекст вместо v.getContext()

Context context; 

RVAdapter(your array,Context mContext) 
    { 
    context=mContext; 
    } 

и использовать его как

personName.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

      System.out.println("Context"); 
      System.out.println(context.toString()); 
      Intent intent = new Intent(context, Restaurante.class); 
      context.startActivity(intent); 
     } 
    }); 

он может попросить использовать контекст в startActivity с Acitivity, вы можете это сделать.

+0

Привет, я внедрил ваш код, но я получил эту ошибку: Нестационарное поле «контекст» не может ссылаться на статический контекст, поэтому я конвертирую контекст в статичный, но теперь я все еще получаю это исключение, когда пытался запустить активность: unimagdalena.edu.co.restaurantes I/Хронология: Хронология: Activity_launch_request id: unimagdalena.edu.co.Время работы: 8967504 unimagdalena.edu.co.restaurantes W/dalvikvm: threadid = 1: нить, выходящая с неперехваченным исключением (group = 0x41852ce0) – Miguel

+0

вы можете предоставить весь свой код, так что это поможет мне четко понять вашу проблему. . – Meenal

+0

MainActivity: https://gist.github.com/miguelcrespo/78ba688fd6179f4b0d49 Adapter: https://gist.github.com/miguelcrespo/5652f34d55c79a991a06 – Miguel

0

Передайте объект Activity вашему адаптеру не Контекстный объект. Я видел ваш код. Заменить этот код на этих линиях MainActivity.java

Line 68: RVAdapter adapter = new RVAdapter(restaurantes, MainActivity.this); 

RVAdapter.java

Line 21: Activity mActivityContext; 

Line 55-58: RVAdapter(List<Restaurante> persons, Activity mActivityContext) { 
     this.persons = persons; 
     this.mActivityContext= mActivityContext; 
    } 

Надеется, что это решит вашу проблему.

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