Запуск намерения от onclicklistener

Я пытаюсь начать новую деятельность с пользовательского прослушивателя onclick. Но его невозможно получить доступ к экземпляру MainActivity из onclick-прослушивателя. Кроме того, он показывает неправильный конструктор для намерения. Вот мой код:

public class ChartClickListener implements OnClickListener { private String ChartLink; public ChartClickListener(String chartLink){ this.ChartLink=chartLink; } @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,ChartImageActivity.class); intent.putExtra("chartLink", ChartLink); startActivity(intent); } } 

Спасибо за помощь заранее.

Измените свой код как:

 @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent=new Intent(view.getContext(),ChartImageActivity.class); intent.putExtra("chartLink", ChartLink); startActivity(intent); } 

Передать контекст активности в пользовательский onclick-прослушиватель и использовать этот контекст для запуска активности

  public class ChartClickListener implements OnClickListener { private String ChartLink; Context c; public ChartClickListener(String chartLink,Context context){ this.ChartLink=chartLink; this.c=context; } @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent=new Intent(c,ChartImageActivity.class); intent.putExtra("chartLink", ChartLink); c.startActivity(intent); } } 

Установить setOnClickListener как

 ChartClickListener chartclicklistener=new ChartClickListener("chartLink",MainActivity.this); b.setOnClickListener(chartclicklistener); 

Попробуйте это

 @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent=new Intent(view.getContext(),ChartImageActivity.class); intent.putExtra("chartLink", ChartLink); view.getContext().startActivity(intent);//Changed Here } 

Надеюсь, что это сработает

Замените MainActivity.this с view.getContext() и он будет работать.