Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从onclicklistener启动意图_Android_Android Intent_Onclicklistener - Fatal编程技术网

Android 从onclicklistener启动意图

Android 从onclicklistener启动意图,android,android-intent,onclicklistener,Android,Android Intent,Onclicklistener,我正在尝试从自定义onclick侦听器启动一个新活动。但它无法从onclick侦听器访问MainActivity实例。此外,它显示了错误的构造函数的意图。这是我的密码: public class ChartClickListener implements OnClickListener { private String ChartLink; public ChartClickListener(String chartLink){ this.ChartLink=ch

我正在尝试从自定义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);
    }
像这样试试

@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.替换为
view.getContext()
,这将起作用。

将活动上下文传递给自定义onclick侦听器,并使用该上下文启动Tactivity

 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);

我尝试了这个方法,效果很好,我想干杯,然后转到一个新的活动

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;

    }

}

}

intent构造函数的第一个参数是一个上下文对象将上下文传递给构造函数,并使用它来启动TactivityPost日志猫信息这不起作用,因为MainActivity。这不在onclick listener类的范围内谢谢!这对我有效,而不是被标记为正确的答案。