![](/img/trans.png)
[英]Why do we have to add 'View' as parameter in onClick method and what it does?
[英]Why does an action for a view (Button in this case) have to take a View as a parameter?
我是android開發的新手,但實際上不是Java。
我不明白的是為什么我在Button中定義的方法必須將View
作為參數。
例如..
在XML中
<Button
android:id="@+id/button1"
//etc..
//etc..
android:onClick="displayText" />
可以看出,這是onClick方法。 當我編寫Java代碼時,將像這樣定義displayText
方法
public void displayText(View view){
TextView myTextView = (TextView)findViewById(R.id.textView1);
myTextView.setVisibility(View.VISIBLE);
}
當一切正常時,只需單擊一下按鈕即可顯示我原來隱藏的文本。
當我從該方法中刪除參數View view
時,當我嘗試單擊按鈕時,應用程序崩潰。
我不明白為什么。
我不必對參數中的view
做任何事情。 在非Android開發中,我可以使用參數中的view
並對其進行處理..但是我看不到我對該參數做了任何操作..為什么在此方法中需要它?
潛在地,可以使用相同的方法來處理多個視圖的click事件。 View view
參數將使您知道哪個是事件源。 即單擊了哪個按鈕。
之所以需要它,是因為它必須匹配接口。 嘗試將XML中的函數名稱與可用函數匹配時,找不到它。
Button是View的子類。 因此,當方法采用View時,這意味着它們可以作為Button的輸入,也可以作為View的其他子類的輸入。
該視圖在參數中給出,因此您可以修改單擊的視圖。
順便說一句,我不知道您可以實現這樣的點擊監聽器。 我通常這樣做:
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
// handle
}
});
我已經搜索了Stackoverflow,但是沒有找到適合我所要查找的問題,所以我提出了這個問題。
這里給出的兩個答案對於我來說有點太短了,我無法將我的頭纏在具有參數但從未使用過它們的方法上。
然后,我查看了旁邊的“相關”部分,發現措辭比我的要好,回答更長且滿足我的問題的答案也得到了更詳細的回答。
感謝所有在這里回應的人。 如果有人發現他們自己遇到了相同的問題,這是幫助我理解的問題/答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.