可以显示吐司但不能启动活动

Can show the toast but cant startActivity

我正在使用适配器 class 来填充我的列表视图,但是我的列表视图中的每个项目都有两个文本视图,我想为其设置 OnClick 侦听器。所以我将它设置在适配器 class 中,当我尝试显示吐司时它工作正常。

但问题是我无法在 OnClickListener 中启动 Activity。应用程序崩溃。请帮助或建议实现相同目标的替代方法。 activity 已在清单中提及。

这是我的代码:-

public class Adapter_NearMe_TyreWorx extends ArrayAdapter<List_NearMe> implements View.OnClickListener {
    ArrayList<List_NearMe> arraylist;



    private Context context;
    private List<List`enter code here`_NearMe> list;
    public Adapter_NearMe_TyreWorx(Context context, int resource, List<List_NearMe> objects) {
        super(context, resource, objects);
        this.context = context;
        this.List = objects;
        arraylist = new ArrayList<List_NearMe>();
        arraylist.addAll(List);

    }
    TextView Btn_Call;
     String Fac_landmark;
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.canvas_two, parent, false);
        List_NearMe list= list.get(position);

        String Fac_name=list.getName();
         Fac_landmark=list.getLandmark();

        String Fac_gMap=list.getgMap();
        String Fac_contact=list.getContact();

        TextView distance=(TextView)view.findViewById(R.id.fac_distance);
        TextView Fac_Name=(TextView)view.findViewById(R.id.fac_name);
        TextView Fac_Address=(TextView)view.findViewById(R.id.fac_address);
         Btn_Call=(TextView)view.findViewById(R.id.btn_call);
        TextView Btn_Go=(TextView)view.findViewById(R.id.btn_go);

        Btn_Go.setOnClickListener(this);
        return view;
    }



    public void onClick(View v) {
       Toast.makeText(getContext(),"Toast text",LENGTH.SHORT).show(); //working toast code



        Intent intent = new Intent(getContext(), SampleActivity.class);
        getContext().startActivity(intent);

    }
}
   textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                context.startActivity(new Intent(context.getApplicationContext(), SampleActivity.class));
            }
        });

在您在适配器的构造函数中设置的上下文中调用方法。

as startActivity() 只能从应用程序上下文中的方法启动,因为您的适配器不在那里,您必须引用您在 constructor 你的适配器 class

您必须添加一个 Intent 标志以从非 - Activity class Intent.FLAG_ACTIVITY_NEW_TASK 中添加此标志可以很好地尝试传递您的 Intent :

Intent intent = new Intent(getContext(), SampleActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getContext().startActivity(intent);

Intent intent = new Intent(getContext(), SampleActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getContext().startActivity(intent);

用上下文替换getContext()

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