求教Android中Activity.this和Activity的问题

求教关于Android一个问题

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_1:
                ((Activity)getContext()).finish();
                break;
            case R.id.button_2:
                Intent intent=new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                getContext().startActivity(intent);
                break;
            default:
        }
    }

求教
初学Android,活动实现View.onClickListener接口。当我想要重写onClick时,为什么想要调用finish()方法的时候需要将类型转换成Activity,而调用startActivity时不用转换。
还有就是Activity.this返回的是context吗,那和Activity本身有什么不同?

3个回答

因为startActivity方法是Context的方法,Activity是Context的子类,而finish方法是Activity的方法。
在Acivity中类里面要调用本类的方法直接用就可以了不用Activity.this,但是在acitivty类中的内部类中想要调用Acivity的方法就要用Activity.this,Activity.this指定的Acitivity本身这个对象。建议楼主先把java的知识学扎实吧。

1楼回答的很好,context在学习android的过程成中很重要,建议砸扎实

Context 是 Activity 的父类,finish() 方法实在 Activity 类里面定义的,你现在拿到 Context 对象当然需要强制转换才能调用到 finish()

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!