簡體   English   中英

Android-該功能從未使用過按鈕視圖

[英]Android - the button view has never been used in the function

請注意onClickButton(Button button)函數。 這里的按鈕視圖從未在函數中使用過,那么為什么將其放置在函數視圖中,以及這種“現象”在Java世界中被稱為什么?

package com.example.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Test extends Activity {
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.test_layout);
    super.onCreate(savedInstanceState);
    setUpUI();
}

//BUTTON
private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickButton((Button) view);
        }
    });

}

public void onClickButton(Button button){
    Toast.makeText(this,"Button clicked",Toast.LENGTH_SHORT).show();
}
}

不需要這個onClickButton

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickButton((Button) view);
        }
    });

}

public void onClickButton(Button button){
    Toast.makeText(this,"Button clicked",Toast.LENGTH_SHORT).show();
}

您已經在定義按鈕onClick() ,方法是:

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Toast.makeText(getBaseContext(),"Button clicked",Toast.LENGTH_SHORT).show();
        }
    });
}

編輯:您的問題: 函數中從未使用過按鈕視圖

您在此處提供的代碼並未演示onClick(View view)中View Passed的用法,但如果您認為,您會看到一個視圖已傳遞給函數,以便對該特定視圖進行更改,例如,更改視圖的backgroundColor,隱藏視圖-單擊此按鈕可以在此處完成與視圖相關的更多操作。

我想您正在得到我要解釋的東西。

老實說,我將其稱為不好的編程。

OnClickListener接口以將View作為參數的方式定義onClick()方法。 盡管您以后使用的程序員在您的情況下會創建另一個方法,甚至傳遞參數,但讓我假設他不知道自己在做什么,或者只是舉了“單擊按鈕”吐司。

傳遞接受點擊的View的想法是,您可以創建一個OnClickListener並將其分配給多個View(從而節省一些內存)。 在onClick()方法中,您將需要找出實際上已單擊了哪些視圖,這就是將視圖傳遞給該方法的原因。

這樣,一個標准的實現就是這樣:

public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_a : /* handle click on button a */ break;
        case R.id.btn_b : /* handle click on button b */ break;
        /* and so on */
    }
}

暫無
暫無

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

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