从onclicklistener开始意图

我正在尝试从自定义onclick侦听器启动一个新活动。 但它无法从onclick侦听器访问MainActivity实例。 此外,它显示错误的意图构造函数。 这是我的代码:

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 } 

希望它会奏效

view.getContext()替换MainActivity.this ,它将起作用。

我尝试这个它工作,我想显示一个Toast,然后转移到一个新的活动。

 public class NumbersClickListener implements View.OnClickListener { @Override public void onClick(View view){ Toast.makeText(view.getContext(),"Open the list of Numbers",Toast.LENGTH_SHORT).show(); switch (view.getId()){ case R.id.numbers: Intent i = new Intent(view.getContext(), NumberActivity.class); view.getContext().startActivity(i); break; case R.id.family: Intent i2 = new Intent(view.getContext(),FamilyActivity.class); view.getContext().startActivity(i2); break; case R.id.colors: Intent i3 = new Intent(view.getContext(),ColorsActivity.class); view.getContext().startActivity(i3); break; case R.id.phrases: Intent i4 = new Intent(view.getContext(),PhrasesActivity.class); view.getContext().startActivity(i4); break; } } 

}