2012-09-11 68 views
1
public class Activity01 extends Activity implements OnClickListener, 
     ViewFactory { 
     ... 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      LinearLayout main_view = new LinearLayout(this); 
      m_Switcher = new ImageSwitcher(this); 
      main_view.addView(m_Switcher); 
      m_Switcher.setId(SWITCHER_ID); 
      m_Switcher.setFactory(this); 
      m_Switcher.setOnClickListener(this); 
      setContentView(main_view); 
      ... 
     } 

     public void onClick(View v) { 
      ... 
     } 
    } 

上面的代碼來自Android項目,下面函數的參數被設置爲'this',爲什麼?爲什麼'this'可以用作Java中的參數?

m_Switcher.setOnClickListener(this); 

據javadoc的,這裏應該有如下:

public void setOnClickListener (View.OnClickListener l) 

這意味着參數應該是這樣的:View.OnClickListener

那麼,爲什麼 '這個' 可以有?謝謝!

注意:根據答案,我給出了上面更完整的代碼。

+4

該類是否實現'OnClickListener'?如果是這樣,那就有你的答案。 – Baz

+2

這是什麼? –

回答

7

在類聲明中,您會發現它爲extendsimplementsOnClickListener。這意味着該課程可以用作OnClickListener(因爲它是其中之一)。這就是爲什麼你可以在這裏使用這個

+0

所以你對這種代碼非常熟悉。是的,你完全正確。這是最好的答案。 –

+0

另外需要說的是,當'm_Switcher'被點擊時''Activity01.onClick(View v)'將被調用'v'設置爲'm_Switcher'。 – Prizoff

+0

是的,沒錯。感謝你們兩位! –

相關問題