按鈕 + 結束程序 + 啟動新 Activity


在 Android 中按鈕的產生和操作是由 Button 類別來實作, Button 可由 xml 事先定義好的方式產生,也可以在程式碼中直接建立,建立完成後必須寫出該按鈕的監聽器,並在監聽器中寫入特定方法,修改 MainActivity.java ,加入按鈕如下

MainActivity.java

   1:  package com.example.helloworld;
   2:   
   3:  import android.app.Activity;
   4:  import android.content.Context;
   5:  import android.content.Intent;
   6:  import android.graphics.Typeface;
   7:  import android.os.Bundle;
   8:  import android.view.Gravity;
   9:  import android.view.View;
  10:  import android.view.View.OnClickListener;
  11:  import android.widget.Button;
  12:  import android.widget.TextView;
  13:   
  14:  public class MainActivity extends Activity {
  15:   
  16:      static final String tLog = "Trace Log";
  17:   
  18:      TextView tv; // init by xml use
  19:   
  20:      Button bYes; // enter button
  21:      Button bNo; // exit button
  22:   
  23:      @Override
  24:      public void onCreate(Bundle savedInstanceState) {
  25:   
  26:          super.onCreate(savedInstanceState);
  27:   
  28:          initByXml();
  29:   
  30:      }
  31:   
  32:      void initByXml() {
  33:          setContentView(R.layout.activity_main);
  34:          // TextView init
  35:          tv = (TextView) findViewById(R.id.textView1);// why can't cast to
  36:                                                          // TestTextView
  37:          tv.setTextColor(0xff888888); // set color
  38:          tv.setTextSize(18.0f); // set size
  39:          tv.setTypeface(Typeface.SERIF);// set typeface
  40:          tv.setText(R.string.copy_right);// change text
  41:          tv.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
  42:   
  43:          // ButtonYes init
  44:          bYes = (Button) findViewById(R.id.buttonYes); // get ButtonYes
  45:          OnClickListener bYesOc = new OnClickListener() { // build ButtonYes Listener
  46:   
  47:              @Override
  48:              public void onClick(View v) {
  49:                  // TODO Auto-generated method stub
  50:   
  51:                  Intent goAct = new Intent();// new a Intent
  52:                  goAct.setClass(MainActivity.this, GetDisplaySize.class); // set class
  53:                  startActivity(goAct); // start another Activity
  54:                  finish(); // exit program
  55:              }
  56:          };
  57:          bYes.setOnClickListener(bYesOc);// set ButtonYes Listener
  58:   
  59:          // ButtonNo init
  60:          bNo = (Button) findViewById(R.id.buttonNo); // get ButtonNo
  61:          bNo.setOnClickListener(new OnClickListener() { // build ButtonNo Listener
  62:   
  63:              @Override
  64:              public void onClick(View v) {
  65:                  // TODO Auto-generated method stub
  66:   
  67:                  finish(); // exit program
  68:   
  69:              }
  70:          });
  71:   
  72:      }
  73:   
  74:  }


第 20 ~ 21 行為加入的按鈕,其詳細定義在 xml 中, 由於 MainActivity.java 會修改為版權宣告流程, 當繼續 (bYes) 按鈕按下,就會進入下一個流程, 而離開(bNo)按鈕按下,就會離開程序
第 28 行 initByXml(); 為初始化的動作,在該流程中需要的元件都會在這初始化
第 33 行套用 R.layout.activity_main 的佈局
第 35 ~ 41 行為 TextView 的使用,其內容( R.string.copy_right )為版權聲明
第 44 行取得在佈局中的按鈕(R.id.buttonYes),並指定給 bYes
第 45 行使用匿名內部類別建立 bYesOc 監聽器
第 48 行覆寫 onClick(View v) 方法,並在其中加入按下按鈕觸發的事件
第 51 行建立 Intent goAct = new Intent(); 用來啟動另 1 個 Activity
第 52 行 goAct.setClass(MainActivity.this, GetDisplaySize.class);  第1個參數為當前的 Activity而第 2 個參數為想啟動的 Activity
第 53 行啟動 Activity
第 54 行結束目前的 Activity
第 57 行讓 bYes 按鈕套用 bYesOc 監聽器內容    
第 60 ~ 70 行為 bNo 按鈕的設定
第 61 行直接在 setOnClickListener 方法中建立監聽器
第 67 行結束程序,這種結束程序是指關閉 Activity ,如果有多 Activity 在執行或切換時,建議使用 System.exit( ) 方法

結果為


















按了繼續之後,跳到 GetDisplaySize 類別


















按了離開之後,結束程序回到桌面




















0 意見:

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews