2011-05-22 80 views
0

所以,我再次,問一個非常基本的問題。我爲自己的不適感到抱歉,但我想我很少閱讀關於這些主題的指導教程。我的問題如下:Android:聽衆模式內onCreate()

我想使用「偵聽器」模式來處理我的GUI上的按鈕按下。我相信onClickListener是我需要用來處理這些按鈕按下。但是,我不確定是否應該創建和處理在onCreate方法內創建GUI後發生的事件。下面的代碼是我的onCreate方法中對我的活動之一:

View.OnClickListener upDownListener = new View.OnClickListener() 
    {  
     @Override 
     public void onClick(View v) 
     { 


      if(v == (upOneButton)) 
      { 
       Log.d("OptionSelect", "Up One Button Pressed."); 
       ops.getOptionList().get(0).incrementProbability(4); 
      } . . . 

這種方法被稱爲更新與不同數量的一些GUI文本。它被調用,但GUI沒有響應。我想這與我嘗試在onCreate方法中使用它有關。

簡而言之,在GUI中處理用戶事件的好方法和簡單方法是什麼?

非常感謝。

編輯:Log.d()確實被調用。另外,ops是OptionSelect類型的對象,它恰好是進行onCreate()調用的類的類型。這會成爲一個問題嗎?此外,這裏是incrementProbability()方法:

public void incrementProbability(int numberOfOptions) 
    { 
     probability += (numberOfOptions - 1); 
     if(probability > 100) 
     { 
      Log.i("OptionSelect", "Exceeded Maximum by " + (probability - 100)); 
      probability = 100; 
     } 
    } 

而且,這裏是相關的代碼,我應該包括在被在的onClick年底更新我的GUI()方法:

private void refreshDisplay(TextView a, TextView b, TextView c, TextView d) 
{ 
    a.setText(getOptionList().get(0).getProbability() + ""); 
    b.setText(getOptionList().get(1).getProbability() + ""); 
    c.setText(getOptionList().get(2).getProbability() + ""); 
    d.setText(getOptionList().get(3).getProbability() + ""); 

    a.invalidate(); 
    b.invalidate(); 
    c.invalidate(); 
    d.invalidate(); 
} 

感謝您的幫助!

+1

我不認爲這是你的聽衆/處理程序的問題,但事實上,你更新UI的方式,你的Log.d調用得到執行嗎? – Jodes 2011-05-22 18:56:19

+0

你能發佈更多的周邊代碼嗎?什麼是'ops'?它是什麼類型?在哪裏修改? 'incrementProbability'是否觸發UI偵聽的任何「改變」事件,以便它可以更新? – adamp 2011-05-22 19:07:09

回答

4

我個人更喜歡有我的活動實現偵聽器接口並添加一個onClick方法對活動本身,如...

public class MyActivity extends Activity 
    implements View.OnClickListener { 

    ... 

    @Override 
    public void onClick(View v) { 

     ... 

    } 
} 

我就用......

myGuiObject.setOnClickListener(this); 

。每當我想將該方法設置爲任何GUI對象的偵聽器時。