亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Lambda 設置 OnCheckedChangeListener

使用 Lambda 設置 OnCheckedChangeListener

素胚勾勒不出你 2021-11-24 14:39:14
我想對 OnCheckedChangeListener 使用 lambda 而不是匿名類。設置偵聽器的原始代碼工作正常,內容如下:mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {    @Override    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {        mCrime.setSolved(isChecked);    }});我嘗試通過執行以下操作將其更改為 lambda:mCheckBox.setOnCheckedChangeListener(l -> mCrime.setSolved(isChecked));但我收到來自 Android Studio 的錯誤消息:無法解析符號已檢查。我原以為 lambda 會隱式解析 isChecked,即使 onCheckChanged 需要兩個參數。我的理解有什么問題?
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

你的語法是錯誤的。你所擁有的甚至不應該編譯。用這個:

mCheckBox.setOnCheckedChangeListener((view, isChecked) -> mCrime.setSolved(isChecked));

前面的東西->不代表偵聽器,而是在該偵聽器中傳遞的參數,在這種情況下是一個視圖和一個布爾值。



查看完整回答
反對 回復 2021-11-24
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

isChecked 只是一個參數名稱,當您使用 lambdas 時它不存在,但是這里是正確的 lambda 和您的 onCheckChangeListener 的參數名稱

mCheckBox.setOnCheckedChangeListener((CompoundButton.OnCheckedChangeListener) (buttonView, isChecked) -> mCrime.setSolved(isChecked));


查看完整回答
反對 回復 2021-11-24
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

setOnCheckedChangeListener 有兩個參數

CompoundButton buttonView, boolean isChecked,所以 lambda 語句將是

mCheckBox.setOnCheckedChangeListener(buttonView, isChecked -> mCrime.setSolved(isChecked))

話雖如此,我對 Java lambdas 還不夠熟悉,不知道它是否可以處理多個參數。


查看完整回答
反對 回復 2021-11-24
  • 3 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號