此文末參考鏈接:
此段代碼的教程以及使用接口的方式、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)邏輯?
setOnClickListenerGSX:
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.OnClickListenerGSX:new不是定義構(gòu)造器么?
PH:是對象
XY:接口的new不能是構(gòu)造方法吧?
問題1:View.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)
toastGSX:以上代碼也可以單獨添加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(){
GSX:你們點擊事件用的是接口(使用switch語句),還是轉(zhuǎn)換實例向下轉(zhuǎn)型(即本代碼)?
XH:點擊事件不用接口用什么?
GTF:這個有很多重載的方式
問題:點擊事件,以上代碼可以作為點擊事件(綁定)方式之一,還是僅僅用于注冊監(jiān)聽器?
因為鏈接1以及鏈接2中也有涉及使用接口進(jìn)行點擊事件(即switch語句的方式)
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)方式
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。