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

原代码,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;

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

也可以直接用MyApplication.this代替this。

Original: https://blog.csdn.net/weixin_43655688/article/details/109133702
Author: 手滑了才点的
Title: Android Studio中setOnClickListener不能使用this的解决方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/526587/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球