簡體   English   中英

為什么視圖操作(在這種情況下為Button)必須將View作為參數?

[英]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,但是沒有找到適合我所要查找的問題,所以我提出了這個問題。

這里給出的兩個答案對於我來說有點太短了,我無法將我的頭纏在具有參數但從未使用過它們的方法上。

然后,我查看了旁邊的“相關”部分,發現措辭比我的要好,回答更長且滿足我的問題的答案也得到了更詳細的回答。

感謝所有在這里回應的人。 如果有人發現他們自己遇到了相同的問題,這是幫助我理解的問題/答案。

為什么android方法接受View對象,但未使用這些對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM