以前很不明白爲何實現監聽器的時候會是以下的寫法:android
import android.view.View; public class Test extends Activity{ @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); final Button button = new Button(this); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 點擊事件處理 } }); } }
一直把OnClickListener看成View的一個子類,還想爲何必定要用View.的形式呢?我已經import了啊,忽然才反應過來,這是View裏面的一個接口啊,直接使用接口就找不到是哪一個接口了。
用匿名內部類的形式實現的了一個監聽接口,onClick只是接口中定義的一個方法,傳入的View v是所要監聽的View。ide
昨天寫activity的時候,看見一個這樣的寫法:ui
return new AlertDialog.Builder(getActivity()) .setView(v) .setTitle(R.string.date_picker_title) .setPositiveButton(android.R.string.ok, null) .create();
我琢磨這一連串的....都是什麼?JAVA神之技巧麼?後來一琢磨,原來後面的四個方法都連續返回一個對象,經過連續三個參數的傳入,最後create()一個擁有三個參數的對象,固然,若是顯示器夠寬的話,寫成一行就不會碰見這種腦抽問題了。this