2011-11-07 78 views
0

我正在研究一個需要我在按鈕上實現多個點擊偵聽器的應用程序。我被卡住了。經過一番搜索之後,我只是遇到了一些可以使這成爲可能的黑客。在按鈕上實現多個點擊偵聽器

但是在這種情況下,有些不適用,因爲在我的應用程序中,邏輯是如果按鈕被單擊並且條件滿足,則第二個偵聽器被稱爲觸發另一個事件。

這似乎很棘手。有沒有人有任何想法?

謝謝。

+0

每當第一個點擊偵聽器執行時,爲什麼不調用第二個點擊偵聽器的實現? – flash

+1

爲什麼你需要多個點擊監聽器?難道你不能把你的邏輯放在一個點擊監聽器中,然後從那裏調用適當的代碼? – m0skit0

+0

謝謝,但是當我將邏輯放置在一個點擊監聽器中時,其中一個會被另一個監聽器覆蓋。 – user788511

回答

1

你可以滿足你的需求使用這樣的:

設置一個全局變量說int condition_number=0;

然後,

mButton.setOnClickListener(new OnClickListener) 
{  
    performThis(condition_number); 
} 

perforThis(int number) 
{ 
    switch(number) 
    { 
     case 1: 
       //do some stuff for condition 1 
       //set condition_number accordingly,relatively to what you want to perform next 
       performThis(codition_number); 
       break; 

     case 2: 
       //do some stuff for condition 2 
       //set condition_number accordingly,relatively to what you want to perform next 
       performThis(codition_number); 
       break; 

     case 3: 
       //do some stuff for condition 3 
       //set condition_number accordingly,relatively to what you want to perform next 
       performThis(codition_number); 
       break; 

     default: 
       //do something 
       break; 
    } 
} 

這樣,您就能夠調用不同的代碼段用於不同的條件,並多次打電話給他們,你需要未做衝突。

您可以設置一個案例,通過在那裏放置中斷來擺脫此方法的執行。

+0

謝謝Hiral,這沒有把戲:) – user788511

+0

@ user788511:很高興聽到! :) – Hiral

0

嘗試在此線程檢查這個答案,也許這是你在找什麼 - Keeping multiple OnClickListeners in one class

+0

我認爲這不是他/她正在尋找的東西。 –

+0

嗯,我通過switch/case來了解onClickListener的概念。而不要天真:)只有男人去這裏:D – Alone89

+0

謝謝Alone89,但在我的情況下,我有一個按鈕與多個聽衆,上面的線程是相反的..感謝所有相同的.. – user788511

2

而不是讓另一聽衆的,只需要調用根據條件不同的功能,從你的唯一聽衆。

+0

影子,請你擺脫一些更多的光?我真的堅持了很長一段時間.. – user788511

+1

我從你的問題中瞭解到,你想根據某些條件執行不同的操作,當你按下按鈕的權利?所以我的建議是在聽衆只是把切換條件放在每個條件你調用一個單獨的函數,照顧你想要執行的整個邏輯。總之,將邏輯保持在偵聽器外部,並且只是在偵聽器中檢查條件。希望這可以幫助。 – Shadow

+0

影子,感謝您的建議,我只是想知道,我應該通過什麼條件轉換?請原諒我的無知,但我想使用視圖作爲條件,然後我想起它將是無用的,因爲只有一個按鈕視圖..請告訴 – user788511

0

正如陰影所指出的,你可以做這樣的事情:

你的XML佈局:

<Button 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="@string/doStuff" 
    android:onClick="doStuff" /> 
在活動

function void doStuff(View target) { 
    listener1(target); 
    listener2(target); 
    ... 
} 

function void listener1(View target) { 
    ... 
} 

function void listener2(View target) { 
    ... 
} 

,然後實現你中的多個監聽聽衆1,聽衆2等...