TShopping

 找回密碼
 註冊
搜索
查看: 282|回復: 0

[教學] Button按鈕的用法

[複製鏈接]
發表於 2014-4-14 00:04:10 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
1、代碼如下:
/res/layout/main.xml
  1. <p><?xml version="1.0" encoding="utf-8"?></p><p><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>android:orientation="vertical"</p><p>android:layout_width="fill_parent"</p><p>android:layout_height="fill_parent"</p><p>></p><p><Button android:id="@+id/button"</p><p>       android:layout_width="wrap_content"</p><p>       android:layout_height="wrap_content"</p><p>       android:text="OK"/></p><p><Button android:id="@+id/button2"</p><p>       android:layout_width="wrap_content"</p><p>       android:layout_height="wrap_content"</p><p>       android:text="Exit"/></p><p></LinearLayout></p>
複製代碼
Java代碼1
  1. <p>public class MainActivity extends Activity implements OnClickListener {</p><p>@Override</p><p>public void onCreate(Bundle icicle) {</p><p>super.onCreate(icicle);</p><p>setContentView(R.layout.main);</p><p>Button btn = (Button) findViewById(R.id.button);</p><p>Button btn2 = (Button) findViewById(R.id.button2);</p><p>btn.setOnClickListener(this);</p><p>btn2.setOnClickListener(this);</p><p>}</p><p>public void onClick(View arg0) {</p><p>switch (arg0.getId()) {</p><p>case R.id.button:</p><p>setTitle("this is OK button");</p><p>break;</p><p>case R.id.button2:</p><p>this.finish();</p><p>break;</p><p>}</p><p>}}</p>
複製代碼
詳解:
1框架是主角,它呼叫子類的onCreate()函數時,首先正向呼叫父類Activity的onCreate()函數,先執行父類的預設函數,然後才執行自己(即MainActivity) 的onCreate()函數的指令。繼續執行到setContentView(R.layout.main)指指令時,就去取main.xml 的內容,依據它來進行屏幕畫面的佈局(Layout)。
2. 指令:Button btn = (Button)findViewById(R.id.button);找出目前的佈局(即R.layout.main)裡的按鈕參考,並存入btn變量,於是btn就參考到畫面上id 值為id/button 的按鈕了。
3. 指令:btn.setOnClickListener(this);這設定按鈕事件的處理程序(Event Handler),又稱為事件監聽者。當使用者按下id 值為id/button 的按鈕時,框架必須把事件準確地傳遞到適當的類,並呼叫所指定的函數。其中的參數:this 就表示此按鈕事件必須傳遞到MainActvity的對象,也就是目前對像(Current Object)。至於由MainActvity類的哪一個函數來處理呢?就是由OnClickListener 接口所規定的onClick(View arg0)函數來處理。
4、由於可能有多個按鈕,其事件都會傳遞到MainActvity,都由onClick()函數負責處理,所以在onClick()函數里的switch 語句按照按鈕id值來判斷到底是哪一個按鈕送來的事件。如果是由id 值為id/button 的按鈕(即OK)所送來的話,就在畫面標題(Title)區顯示出字串:」this is OK button」。反之,如果是由id 值為id/button2 的按鈕(即Exit)所送來的話,就呼叫父類的finish()函數而結束目前的畫面(即目前的Activity)。
Java代碼2
  1. <p>public class MainActivity extends Activity {</p><p>@Override</p><p>public void onCreate(Bundle icicle) {</p><p>super.onCreate(icicle);</p><p>setContentView(R.layout.main);</p><p>Button btn = (Button)findViewById(R.id.button);</p><p>Button btn2 = (Button)findViewById(R.id.button2);</p><p>btn.setOnClickListener(listener);</p><p>btn2.setOnClickListener(listener2);</p><p>}</p><p>OnClickListener listener = new OnClickListener() {</p><p>public void onClick(View v) {</p><p>setTitle("this is OK button"); </p><p>}</p><p>};</p><p>OnClickListener listener2 = new OnClickListener() {</p><p>public void onClick(View v) { </p><p>finish(); </p><p>}</p><p>};</p><p>}</p>
複製代碼
兩種用法實現的功能是一樣的,具體用哪種, 自己在分析一下!


 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-10 18:55 , Processed in 0.054737 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表