在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Android/ 關(guān)于button點擊事件中setOnClick等元素的解讀以及方法?以及toas

關(guān)于button點擊事件中setOnClick等元素的解讀以及方法?以及toast的位置以及作用?

此文末參考鏈接:
此段代碼的教程以及使用接口的方式、switch語句的教程鏈接為鏈接1.
匯總里說的有更多的實現(xiàn)方法,為鏈接2。

文中鏈接為視覺統(tǒng)一,鏈接均于文末,以上為方便文中跳轉(zhuǎn),加了文中的跳轉(zhuǎn)鏈接。

以下代碼為我學(xué)習(xí)button以及監(jiān)聽器和點擊事件相關(guān)的簡單代碼:

直接上代碼,討論與咨詢中教程鏈接于參考鏈接中(如果需要我將教程文字放上來):

package com.example.felixxiong.uitest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; //需要添加buton包導(dǎo)入

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button mButton = (Button)findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void OnClick(View view){
                Toast.makeText(MainActivity.this.,"點擊了Toast",Toast.LENGTH_SHORT).show();
          }
        });
    }
  }

以上代碼我的初次理解

Button mButton就是賦一個值mbutton,
button findviewbyid就原本是一個返回view,但是因為根據(jù)ID里的button就返回一個button實例,這個過程就是 Button mButton = (Button)findViewById(R.id.button);
這一行,
下面就是注冊一個監(jiān)聽器,調(diào)用構(gòu)造器View.OnClickListener,之后重寫onclick,在后面括號里寫自己的邏輯?

返回button實例后就是一個向下轉(zhuǎn)型的過程,就是(Button)findViewById(R.id.button);,等號后半段

大體概括是:先取名字,之后獲得ID向下轉(zhuǎn)型返回實例,之后注冊監(jiān)聽器,重寫方法,寫自己的跳轉(zhuǎn)邏輯?

關(guān)于討論以及咨詢交流匯總

setOnClickListener

GSX:

 mButton.setOnClickListener(new View.OnClickListener(){
        //注冊監(jiān)聽器,調(diào)用View.OnClickListener構(gòu)造器

XY:這不是個類,是個接口

還有的問題在"銜接的問題"

問題:Java中,類使用new就可以當(dāng)對象使用,所以這里的setOnClickListener是匿名內(nèi)部類,或者是接口?

銜接的問題

GSX:PH說new View.OnClickListener是對象,教程里說里面?zhèn)魅雜et這個是對象,類變成new不就是當(dāng)對象使用了,所以等于是對象,new 后面調(diào)用構(gòu)造器,可是XY說set是接口不是構(gòu)造器,而且我還沒到調(diào)用接口這一個步驟

XY:應(yīng)該不是構(gòu)造器,因為回調(diào)函數(shù)是一個對象而不是實現(xiàn)的方法

new View.OnClickListener

GSX:new不是定義構(gòu)造器么?
PH:是對象
XY:接口的new不能是構(gòu)造方法吧?

問題1View.OnClickListener是對象,之前說new是引用構(gòu)造器,new的前面setOnClickListener使用new就可以編程對象使用,對象傳入對象?

問題2:new不應(yīng)該是調(diào)用構(gòu)造器,教程里寫的是對象?是不是View.OnClickListener不是構(gòu)造器?

OnClick()

GSX:Listener之后都是點擊邏輯吧?
PH:OnClick()方法內(nèi)是點擊邏輯

問題:toast僅僅是氣泡?在實際的開發(fā)應(yīng)用中,這個應(yīng)該也算是點擊之后的邏輯?因為教程中是可以進(jìn)行實戰(zhàn)添加的,點擊之后可以出現(xiàn)

toast

GSX:以上代碼也可以單獨添加toast,還有使用接口的方式也可以實現(xiàn)toast,是不是有兩種方法?
PH:這個是寫在監(jiān)聽器里的,所以是監(jiān)聽器,點擊后的邏輯都是監(jiān)聽器實現(xiàn)的,沒監(jiān)聽器就不知道此按鈕是否被點擊…反正不用監(jiān)聽器,toast做不出來,所以兩種方法是不存在的

問題:toast是寫在監(jiān)聽器里的么?看教程中點擊事件可以根據(jù)這種代碼即可實現(xiàn),還有一種方式就是增加switch語句和case中實現(xiàn),下面的鏈接2有更多的實現(xiàn)方法……
如果說toast是寫在監(jiān)聽器里的,那監(jiān)聽器是不是包括了以下代碼:

mButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void OnClick(View view){
                Toast.makeText(MainActivity.this.,"點擊了Toast",Toast.LENGTH_SHORT).show();
          }

而不只只是含有以下這一行?

 自定義button名稱.setOnClickListener(new View.OnClickListener(){

關(guān)于本段代碼

點擊事件

GSX:你們點擊事件用的是接口(使用switch語句),還是轉(zhuǎn)換實例向下轉(zhuǎn)型(即本代碼)?
XH:點擊事件不用接口用什么?
GTF:這個有很多重載的方式

問題:點擊事件,以上代碼可以作為點擊事件(綁定)方式之一,還是僅僅用于注冊監(jiān)聽器?
因為鏈接1以及鏈接2中也有涉及使用接口進(jìn)行點擊事件(即switch語句的方式)

關(guān)于使用接口的方式綁定事件

GSX:教程里還有一個方法就是使用接口點擊事件,使用的是switch語句,之后里面有toast,但是僅僅是現(xiàn)在的綁定方法也可以出先toast,但是有人說toast是寫在監(jiān)聽器里的,邏輯是在onClick后的括號里面寫
PZ:看你怎么設(shè)計,都可以實現(xiàn),一般switch里越簡單越好
GSX:Android點擊事件都是需要接口的?
PZ:不是必須的,看你怎么設(shè)計,多看看設(shè)計模式

參考鏈接

鏈接1:(第十二講)Button 及點擊事件
鏈接2: Android響應(yīng)onClick方法的五種實現(xiàn)方式

回答
編輯回答
舊顏

1:setOnClickListener是匿名內(nèi)部類

2:Toast寫在onClick方法中,onClick寫在setOnClickListener方法中,toast寫在監(jiān)聽器里的

3:點擊事件方式有多種,匿名內(nèi)部類的方式是本段代碼,接口方式這兩種是常用的

4:可能setOnClickListener是回調(diào)函數(shù),之后是對象而不是方法

仍未知:View.OnClickListener是不是構(gòu)造器

2017年3月16日 15:42