編輯:關於Android編程
小問題,記錄下~
Android4.0以後開始推薦使用DialogFragment代替Dialog。Android的官方文檔中給了兩個示例:
一個Basic Dialog
onCreateView
方法。 一個Alert Dialog
onCreateDialog
方法。
在實際應用中經常是需要既自定義窗口內容、又需要自定義按鈕的。
這時候如果我們按圖索骥,把DialogFragment的onCreateView和onCreateDialog方法都重寫的話,會發現——Bong!異常~ 諸如“AndroidRuntimeException: requestFeature() must be called before adding content”的就出現了。
這個異常出現的原因可以看:stackoverflow的這個問題中Freerider的答案以及下面評論。
摘抄一下:“ You can override both (in fact the DialogFragment says so), the problem comes when you try to inflate the view after having already creating the dialog view. You can still do other things in onCreateView, like use the savedInstanceState, without causing the exception.”
既然兩個方法不能同時重寫,所以就選擇一個進行重寫:
重寫onCreateDialog方法,參照官方示例即可以自定義按鈕,然後對其作修改,使之能自定義view——在AlertDialog.Builder進行create()
創建dialog之前,使用AlertDialog.Builder的setView(view)
方法,其中view是自定view。
來感受一下區別~
這是Google給的示例:
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { int title = getArguments().getInt(title); return new AlertDialog.Builder(getActivity()) .setIcon(R.drawable.alert_dialog_icon) .setTitle(title) .setPositiveButton(R.string.alert_dialog_ok, 。。。) .setNegativeButton(R.string.alert_dialog_cancel, 。。。) .create(); }
這是修改之後的:
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { //inflater在前面構造函數中實例化 View v = inflater.inflate(R.layout.dialog,null); imageGridView = (GridView) v.findViewById(R.id.gridViewImage); //自定義view,bla~bla~ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); return builder.setView(v) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle(title) .setCancelable(false) .setPositiveButton(R.string.alert_dialog_ok, 。。。) .setNegativeButton(R.string.alert_dialog_cancel, 。。。) .create(); }
短暫的暑假已經結束了,假期培訓正式開始。Androidmanifest.XML 清單文件es 資源文件Drawable 顏色改變Layout 布局的文件setConten
原因分析用戶使用android 5.0以上的系統在安裝APP時,將消息通知的權限關閉掉了。實際上用戶本意只是想關閉Notification,但是Toast的show方法中
目錄:1.重要類概述2.重要類的常用方法2.簡單View繪制(圓、圓弧、矩形、弧形、圓角矩形、橢圓、文字等)3.setXfermode(Xfermode xfermode
在做項目的時候,想在 ExpandableListView 中嵌套一個 GridView,在實現的過程中,遇到了不少坑,所以寫篇博客記錄一下,也順便幫助下和我一樣的新手。