showDialog方法 deprecated


轉:http://blog.csdn.net/iaiti/article/details/12782725

發現敲入showDialog方法廢棄或者過時真的查不到什么,直接打了showDialog deprecated上去,英文就英文吧。

 

     

     不愧是StackOverFlow網站(好風趣的名字),令我驚訝的是,這個提問在一年前就有了。老外的東西還是老外快一點。

 

     參考兩個帖子http://stackoverflow.com/questions/11220820/the-method-showdialogint-from-the-type-activity-is-deprecated-in-android

和http://stackoverflow.com/questions/10285047/showdialog-deprecated-whats-the-alternative/10285062#10285062

   

    其實查官方Api的時候就能看到。 showDialog(int id)是在Api level 1 添加的方法。Api level 13(Honeycomb 3.0) 時方法就廢棄了。在程序里面調用Dialog使用新的DialogFragment類代替FragmentManager(既然知道這個代替了,就自己查查api吧,看怎么用)。通過Android的兼容包,在舊平台也是可用的。

 

      

      Fragment(Fragment代表在一個Activity里面用戶接口的一個行為或者一部分)顯示一個對話框窗口並且位於Activity窗口的頂層,其中這樣的Fragment就包括了Dialog類,正確的顯示基於fragment的狀態。控制對話框的show,hide, dismiss 應該通過Api的調用而不是直接調用對話框。

 

     找到android.app.DialogFragment類的api,找到一個簡單的例子:

[java]  view plain copy
 
  1. <span style="font-size:18px">public static class MyAlertDialogFragment extends DialogFragment {  
  2.   
  3.     public static MyAlertDialogFragment newInstance(int title) {  
  4.         MyAlertDialogFragment frag = new MyAlertDialogFragment();  
  5.         Bundle args = new Bundle();  
  6.         args.putInt("title", title);  
  7.         frag.setArguments(args);  
  8.         return frag;  
  9.     }  
  10.   
  11.     @Override  
  12.     public Dialog onCreateDialog(Bundle savedInstanceState) {  
  13.         int title = getArguments().getInt("title");  
  14.   
  15.         return new AlertDialog.Builder(getActivity())//傳入當前的Activity對象  
  16.                 .setIcon(R.drawable.alert_dialog_icon)//一般不往對話框加自己的圖片可以刪掉這句話  
  17.                 .setTitle(title)  
  18.                 .setPositiveButton(R.string.alert_dialog_ok,  
  19.                     new DialogInterface.OnClickListener() {  
  20.                         public void onClick(DialogInterface dialog, int whichButton) {  
  21.                             ((FragmentAlertDialog)getActivity()).doPositiveClick();  
  22.                         }  
  23.                     }  
  24.                 )//positiveButton 肯定(樂觀)按鈕,android2點幾的版本肯定在左,估計谷歌為了  
  25.                  //為了迎合大多數人的右手習慣,在4.0的是在你右側  
  26.                 .setNegativeButton(R.string.alert_dialog_cancel,  
  27.                     new DialogInterface.OnClickListener() {  
  28.                         public void onClick(DialogInterface dialog, int whichButton) {  
  29.                             ((FragmentAlertDialog)getActivity()).doNegativeClick();  
  30.                            //這句可以改你要寫入的東西,像我用Toast.makeTest();  
  31.  }  
  32.                     }  
  33.                 )  
  34.                 .create();  
  35.     }  
  36. }</span>  


直接copy進項目是沒用的,需要讀懂里面的方法是為了干什么。

 

     問底一下的話,為什么廢棄?接下來他還回答了引用了別人的帖子

Android DialogFragment vs Dialog

      為什么用一個單獨的DialogFragment而不用一個簡單的Dialog,這不是很荒謬么。看完Api文檔里面的介紹DialogFragment的代碼一大堆,使用一個有Yes或者No的按鈕只需要AlertDialog builder 創建一個AlertDialog就行了,沒必要編那么多。

     在Fragment中處理事件有很多種方法,但我只需要簡單通過構造器把定義的消息Handler放進DialogFragment中,然后再把消息准確的與各種點擊相響應。

[java]  view plain copy
 
  1. <span style="font-size:18px">private Message okMessage;  
  2. ...  
  3. okMessage = handler.obtainMessage(MY_MSG_WHAT, MY_MSG_OK);  
  4. public void onClick(.....  
  5.     if (which == DialogInterface.BUTTON_POSITIVE) {  
  6.         final Message toSend = Message.obtain(okMessage);  
  7.         toSend.sendToTarget();  
  8.     }  
  9.  }  
  10. outState.putParcelable("okMessage", okMessage);  
  11. if (savedInstanceState != null) {  
  12.     okMessage = savedInstanceState.getParcelable("okMessage");  
  13. }</span>  


后面代碼的意圖我不是很懂。

 

     以前小學一下,這段時間要用到Android就重新學了一下,當發現手機一連上之后Eclipse可以直接編譯到手機運行時很激動。

 

        世界也在變,時代也在變,人在不,很多方法廢棄,雖然用的是吳亞峰老師的書,2012年一月。我的手機從2.2刷到2.3再刷4.0.

 

        發現很搞笑的東西,之前初學時是觀看Mars老師的視頻,然后我用周末的時間用來學,后面太多事情就放了放,發現他堅持了好久,有些時候還是凌晨的,后面到53集斷了,進來光顧他論壇又發現開始更新,而且還在淘寶賣東西了。當時馬士兵老師也沒有看好Android,剛起步,放遠一下開源的東西,加上比蘋果更親民的價格,確實蘋果價格雖然“高”,是有人買得起,房子也是這個道理。應該是越來越火的。如果Nokia當年像HTC早點搭上這班車,可能還是霸主,也不用賣樓。

      

      不過還是那句,手機上用自己寫點代碼能在自己的手機展示很多東西,It is

amazing!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM