2013-05-01 44 views
0

我正在嘗試執行OnClickListener對於僅從Object繼承的我的類。沒有視圖,或活動..但不知何故,我失去了一些東西,它不能正常工作。這是我的。Android OnClickListener for Object based class

class myActivity extends activity 
{ 
    //variables and methods... 

    private class testA implements OnClickListener 
    { 
     public testA() 
     { 
      setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      //do something 
     } 
    } 
} 

結構是這樣的。當我只有一個testA類的實例時,這工作正常。當我有多個實例時,當我單擊活動中的任何實例時,最後創建的類將收到單擊事件。所有實例都會收到點擊事件,但onClick函數下的邏輯僅適用於最後一個。我想我在這裏錯過了一個正確的參考。

setOnClickListener種皮構造是指 myActivity類和是指種皮類的實例。我注意到,當我打電話setOnClickListener下一個實例中,偵聽 myActivity課改最後創建種皮類。我只是沒有得到如何解決這個問題。也許而不是setOnClickListener,addOnClickListener可能工作正常。

有人有想法嗎?我如何使每個創建的對象正確地接收點擊事件?

我希望我能說出我的問題是什麼..謝謝...

+0

附上您的myActivity類setOnClickListener()方法。 – Krylez 2013-05-01 20:52:10

+0

@ testle構造函數中的@Krylez setOnClickListener()實際上是myActivity類。因爲對於每個創建的實例,我調用setOnClickListener(),只有最後一個實例從我的Activity中接收事件.. – OmerHalit 2013-05-01 21:07:29

回答

0

我的觀念是錯誤的,只有觀點得到OnClickEvent。所以使用implements到Object沒有任何作用。

我改變了結構

class myActivity extends activity 
{ 
    //variables and methods... 

private void initialize() 
{ 
    setOnTouchListener(new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
      testA test = findTestA(event.getX(), event.getY()); 
       if (test != null) 
        test.receiveOnTouch(event); 
    } 
}); 
}  

private class testA 
{ 
    public testA() 
    { 
    } 

    public void receiveOnTouch(MotionEvent event) { 
     //do something with event 
    } 
} 

}