新終極密碼

聚會團康小遊戲,打賭抽籤好工具

One Piece 海賊王

我是要成為海賊王的男人!

Wreck-It Ralph 無敵破壞王

「變好無望,壞也無妨,我只想做我自己」 感動推薦給曾經迷失方向的人們

Spartacus 斯巴達克斯

羅馬時代,身為一名競技場角鬥士的榮耀與卑微。熱血推薦!

Puffy 帕妃

大貫亞美 & 吉村由美

2013年6月20日 星期四

[Android] 按下 PositiveButton 時,如何控制 AlertDialog 關閉與否

一般來說,AlertDialog 內建三種按鈕方法,分別為 setPositiveButton, setNegativeButton, setNeutralButton,設計者可以根據不同的按鈕,實做個別的 onClickListener 來處理按鈕行為。但這三個按鈕按下後一致的結果就是:關閉 AlertDialog。這對於需要在按下按鈕進行一些資料判斷,若資料不符則不允許關掉 AlertDialog 的設計上,是一大麻煩。好在搜尋到網路上武林高手提供的解法,筆記於下。
   View view = View.inflate(this, R.layout.activity_indicate, null);
   final EditText edittextIndicate = (EditText)view.findViewById(R.id.edittext_indicate);
   
   AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
   alertDialog.setTitle("指定密碼");
   alertDialog.setMessage("輸入指定密碼");
   alertDialog.setCancelable(false);
   alertDialog.setView(view);
   alertDialog.setPositiveButton("OK", null); // 真正覆寫內容重新定義於下
   alertDialog.setNegativeButton("Cancel", null);
   
   final AlertDialog alert = alertDialog.create();
   alert.show(); // 取代原本的 alertDialog.show(); 必須在 button 存取之前呼叫
   Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE);
   button.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
     if(!"".equals(edittextIndicate.getText().toString().trim())) {
      finalNumber = Integer.valueOf(edittextIndicate.getText().toString().trim());
     
      alert.dismiss();
     }
    }
   });


首先是標準的 AlertDialog 定義內容,需注意此行,省略了 setPositiveButton 第二個參數 onClickListener 的實做,真正的實做定義於下方。
alertDialog.setPositiveButton("OK", null); // 真正覆寫內容重新定義於下


新建一個 AlertDialog alert,因為原本的 AlertDialog.Builder alertDialog 並沒有 dismiss() 方法。因此程式最後將會利用 alert.dismiss() 來關閉畫面。另外,也需要靠 alert.getButton() 方法取得 PositiveButton 的按鈕控制,這也是 AlertDialog.Builder 沒有提供的方法。特別注意的是,如同註解所示,alert.show() 必須在下一行 button 的存取前呼叫,否則會有 exception 出現。
   final AlertDialog alert = alertDialog.create();
   alert.show(); // 取代原本的 alertDialog.show(); 必須在 button 存取之前呼叫


定義一個 Button,並使用 alert.getButton(AlertDialog.BUTTON_POSITIVE) 取得控制。接著就是正常的 button.setOnClickListener 的定義了。在 onClick 的實做中,可以任意進行資料判斷,如果有需要關閉畫面,呼叫 alert.dismiss() 即可。
   Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE);
   button.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
     if(!"".equals(edittextIndicate.getText().toString().trim())) {
      finalNumber = Integer.valueOf(edittextIndicate.getText().toString().trim());
     
      alert.dismiss();
     }
    }
   });

[Android] 如何正確取得 AlertDialog 元件的 findViewById

一般正規的 Android layout 中,如需控制元件,首先需執行 findViewById 取得元件的控制入口,例如
  Spinner spinner = (Spinner)view.findViewById(R.id.spinner_player);
  EditText edittextPlayer = (EditText)view.findViewById(R.id.editText_player);

若元件所屬的 layout 被設定到 AlertDialog 之中呢?如果還是使用上述的呼叫方式,雖然 Eclipse 不會報錯,但執行時一旦操作元件,將會遇到 "null pointer" 的 exception。
需改寫成以下方式,第 2、3 行的元件必須使用第 1 行定義的 view 來呼叫 findViewById。
  View view = View.inflate(this, R.layout.activity_player, null);
  Spinner spinner = (Spinner)view.findViewById(R.id.spinner_player);
  EditText edittextPlayer = (EditText)view.findViewById(R.id.editText_player);
  
  AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
  alertDialog.setTitle("Player Setting");
  alertDialog.setMessage("Set the number of players");
  alertDialog.setCancelable(false); // 避免點選畫面其他地方而關閉 AlertDialog
  alertDialog.setView(view);
  alertDialog.setPositiveButton("OK", null);
  alertDialog.setNegativeButton("Cancel", null);
  alertDialog.show();

2013年6月5日 星期三

[雜耍] 狼來了!! 楊桃~ 種子盆栽


好像很有趣,來種看看!參考的是這位盆栽達人的網誌「ㄚ啟的部落格

奮力嗑完三顆楊桃,才獲得這些為數不多的種子。有些種子在水果刀的比劃下硬生生被截斷,平常不會有任何感覺,在收集種子時卻格外難過他們的遭遇。

徹底把種子上殘留的果肉洗乾淨,開始進行浸泡動作。每天都要換水,些微沒有附著的果肉雜質可藉此清除。

[2012/8/18 浸泡第 1 天]



教學說浸泡 7 ~ 10 天。我的楊桃種子浸泡到了第 8 天,有幾顆冒出了芽,於是我決定今天就是動土大典!到大賣場旁邊的盆栽園,買了一包培養土,鋪滿容器約九分滿。播種時記得要將芽點 (較尖的那一端) 朝下種植。平均播種於容器後,再鋪上白色小石子,看起來質感大增!

[2012/8/26 播種第 1 天]




播種第 7 天,首株小綠苗破土而出,看到他們從土裡突破石子挺拔而出,我想只有親自栽培的人才能感受到生命力的旺盛。

[2012/9/2 播種第 7 天]



第 9 天,值得紀念的一刻!第一株擺脫種殼,張開雙臂迎接世界的楊桃小苗!

[2012/9/4 播種第 9 天]



第 15 天,短短兩個禮拜,幾乎全部種苗都已經亭亭玉立,一片欣欣向榮。

[2012/9/11 播種第 15 天]



如果問我種植小盆栽的過程獲得什麼,我想應該就是深深感受到生命力的旺盛與追求生存的感動。起初擔心小石頭鋪太多,會導致綠苗無法撐起,最後確定是我多慮;大自然的生命力,絕對是超乎我們想像的。

2013年6月2日 星期日

[開箱] IRON GYM 門上單槓

打從幾年前為國效勞開始,便覺得拉單槓是很有成就感的事情,只要每天持續練習 (每件事不都是如此?!),可以從入伍 1 下都拉不起來,變成輕鬆 6 下鑑測合格。 (當然有技巧的姿勢可以減少不必要的施力)

純粹為了練練手臂,入手了新玩具 IRON GYM 門上單槓,$400 有找。千萬別誤會我想練成圖片那位阿諾先生的美味 N 塊肌,這是癡人說夢。



使用門上單槓最重要的條件是:

1、門框上緣需要有一定長度的凸出,如此方能穩定地架住門上單槓。 (商品說明需要 1 cm 門框凸出,我的門框凸出 0.7 cm,使用起來尚穩固)

2、門框寬度不能超過最長的橫桿長度。 (本款為 93 cm)

3、門框夠力嗎? (鋼門大可放心,木門或紙糊的門... 請斟酌)

4、乖乖地順上順下就好,千萬別花式上槓,因為門上單槓就是要靠重力才會牢固。


所有的零件。



完成組裝。(隨附的小工具不太中用,最後還是派出正港的扳手與螺絲起子才鎖緊)



「掛」上門框,當施以重力時,反作用力將門上單槓緊緊地固定在門上。



最後,派出咱們第一名模 --- 熊寶褒 --- 實際操作一次給大家看看。