欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Studio中setOnClickListener不能使用this的解决方法

程序员文章站 2022-04-28 18:57:35
...

原代码,this变红

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.btn_1);
        btn.setOnClickListener(this);
    }

看了很多方法,可以这样写btn.setOnClickListener

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.btn_1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //具体操作
              }
        });
    }

但在setOnClickListener中无法访问intent,于是有下面这种解决方法:

    private Context ctx = this;      //直接用context变量定义this

   final static String TAG = "MAINACTIVITY";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.btn_1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.setClass(ctx,Main2Activity.class);
                ctx.startActivity(intent);
            }
        });
    }

这样的代码是可以用的,但还有一些问题存在,等待后续改进。