2012-07-25 71 views
0

作爲Android的初學者,已經遠離編程多年,我無法在互聯網上找到這個答案。它涉及我一直在閱讀的書中的以下代碼,但該語法對於Android來說很常見。我無法弄清楚什麼是});表示。作爲過去一直努力使括號可讀的人,我發現這段代碼很棒,當然,更好的方式來展示這種代碼是可能的嗎?無法找到})的含義;大括號,圓括號在Android中

下面的代碼:

CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave); 
checkBox.setOnClickListener(new View.OnClickListener() 
{ 
public void onClick(View v) { 
     if (((CheckBox)v).isChecked()) 
      DisplayToast("CheckBox is checked"); 
     else 
      DisplayToast("CheckBox is unchecked"); 
    } 
}); 

反正沒有人知道的意思});最後?

回答

6

這是關閉View.OnClickListener的匿名實現的定義,然後關閉方法調用setOnClickListener()

爲了使它更清晰,代碼等同於:

View.OnClickListener listener = new View.OnClickListener() { 
    public void onClick(View v) { 
     if (((CheckBox)v).isChecked()) 
      DisplayToast("CheckBox is checked"); 
     else 
      DisplayToast("CheckBox is unchecked"); 
    } 
}; 

checkBox.setOnClickListener(listener); 
+0

+1但是,如果OP詢問「代碼示例中'};'的含義是什麼? – 2012-07-25 00:51:55

+1

這是一個鬍鬚的眨眼男人。 – tskuzzy 2012-07-25 00:59:45

+0

我是來自OOP日子之前的恐龍:) Mark我假設;是View.OnclickListener指令的結尾(謝謝SteveR!)。我確實找到了答案,但是當你尋找符號時很難搜索,所以我認爲我會發布然後回答,但是你的人太快了!感謝堆。希望下一位新手能更快找到它。 – ESC 2012-07-26 01:39:53

1

它關閉setOnClickListener。提示如果你使用的是eclipse,將你的光標放在關閉的括號的右邊。這個開放的括號將會被突出顯示,這樣你可以看到什麼是什麼。

+0

感謝androidcurious,出於某種原因我無法匹配()括號,但我可以匹配{}確定。我會再檢查....是的,你當然是對的。我沒有看到匹配的支架,因爲它不在我預期的地方!選擇性失明。 – ESC 2012-07-26 01:49:01

+0

我的匹配括號現在變成紅色,所以即使我可以看到它們。 – ESC 2012-07-26 01:52:46

+0

很高興我能幫到你。是的,我不認爲你可以在()s – ninge 2012-07-26 01:58:38

3

「});」:

  • 「}」:關閉View.OnClickListener()方法
  • 「)」:關閉setOnClickListener()
  • 「;」 :關閉指令
+0

比我的回答更清楚。 +1 – ninge 2012-07-25 00:55:47

0

開始:

checkBox.setOnClickListener(new View.OnClickListener() 
{ 
public void onClick(View v) { 
     if (((CheckBox)v).isChecked()) 
      DisplayToast("CheckBox is checked"); 
     else 
      DisplayToast("CheckBox is unchecked"); 
    } 
}); 

排除方法(這不會在所有情況下進行編譯,但讓我們假裝它現在):

checkBox.setOnClickListener(new View.OnClickListener() 
{ 
    /* .. */ 
}); 

刪除多餘的空格:

checkBox.setOnClickListener(new View.OnClickListener() { /* .. */ }); 

而且在那裏。它看起來像一個「正常的方法調用」:)代碼只是通過實例的匿名類型表示事件偵聽器。

它可能已被寫入:

ClickEventListener listener = new View.OnClickListener() { /* .. */ }; 
checkBox.setOnClickListener(listener); 

編碼愉快!

0

感謝您的答覆。我發現重新安排括號有幫助,所以我會發布這個供將來參考。雖然我不確定它是如何符合傳統做法的。

CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave); 
checkBox.setOnClickListener 
    ( new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
        if (((CheckBox)v).isChecked()) 
         DisplayToast("CheckBox is checked"); 
        else 
         DisplayToast("CheckBox is unchecked"); 
      } // onClick 
     } // new View.OnClickListener() 
    ); // checkBox.setOnClickListener 

乾杯!