finish 函数是 activity 类的成员函数吧?像他这样的调用方法不成了调用 OnClickListener 类的成员函数了吗
package com.example.administrator.first;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.m1);
Button b = (Button)findViewById(R.id.bt1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
}
});
}
}
package com.example.administrator.first;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
public class SecondActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.m2);
setTitle("SecondActivity");
Button b = (Button)findViewById(R.id.bt2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
解决方案
20
少年,你很有天赋,看代码很仔细也知道思考。
来来来,这个问题放一边,先来看看内部类这个概念。
内部类是什么,它是一个类中再定义的一个类。
来来来,这个问题放一边,先来看看内部类这个概念。
内部类是什么,它是一个类中再定义的一个类。
public class A {
......
public class B {
}
}
B类就是A类的内部类,A被称为外部内。在Java中,内部类不是能用普通的方式访问,内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量和方法,无论能否是private的。
看到这里就明白了,OnClickListener 其实是Activity的一个内部类,所以它可以访问外部类Activity的成员变量和方法,而且OnClickListener有点特殊,它是一个匿名内部类,也是内部类一种。
关于匿名内部类,又是另一个知识点,答主可以去查看一下。