简体   繁体   English

从onclicklistener开始意图

[英]Starting intent from onclicklistener

I am trying to start a new activity from a custom onclick listener. 我正在尝试从自定义onclick侦听器启动一个新活动。 But its unable to access MainActivity instance from onclick listener. 但是它无法从onclick监听器访问MainActivity实例。 Also, its showing wrong constructor for intent. 此外,它显示错误的意图构造函数。 Here is my code: 这是我的代码:

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

Thanks for the help in advance. 我在这里先向您的帮助表示感谢。

Modify your code as: 将您的代码修改为:

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

try like this 试试这样

@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
    }

Hope It will work 希望它会奏效

pass activity context to custom onclick listener and use that context to startactivity 将活动上下文传递给自定义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);
    }

}

set setOnClickListener as 将setOnClickListener设置为

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

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

I try this and it work, i want to show a Toast, and then transfer to a new Activity. 我尝试这个它工作,我想显示一个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;

    }

}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM