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有点特殊,它是一个匿名内部类,也是内部类一种。
关于匿名内部类,又是另一个知识点,答主可以去查看一下。