[問題] TextView OnClick showDialog事件

看板AndroidDev作者 (藍憶)時間11年前 (2015/01/19 11:40), 11年前編輯推噓0(0027)
留言27則, 3人參與, 最新討論串1/1
各位前輩好: 我想寫一個日期專用的textView,透過onclick選擇日期 因為不想要每個textView都重新copy/paste,所以想自己做一個元件。 只是在show Dailog的時候都會有error產生,想請版上先進幫我看一下有甚麼問題。 部分程式碼如下: DateTextView extends TextView{ private DatePickerDailog dpd; .... .... //建構子 public DateTextView(Context context, AttributeSet attrs) { super(context, attrs); Log.d("DateTextView", "constructor"); setAttributeField(attrs); dpd = new DatePickerDialog(getContext(), onDateSetListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); } @Override public void onClick(view v){ //這行沒有會出現removeChild error ((ViewGroup) this.getParent()).removeView(this); //這行會出現requestFeature() must be called before adding content dpd.show(); } } -- ζ ξ 長的越帥,責任越重 ○- <(╯ 難怪這一生我活著都沒什麼壓力.. ■) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.44.33 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1421638842.A.8CF.html ※ 編輯: jacky951 (60.251.44.33), 01/19/2015 11:41:30

01/19 12:09, , 1F
01/19 12:09, 1F

01/19 12:38, , 2F
那個已經google 過了 不過沒有跟我一樣的情況
01/19 12:38, 2F

01/19 12:39, , 3F
我也知道setContetView這個動作必須在requsetF...之前
01/19 12:39, 3F

01/19 12:39, , 4F
重點在於如何把textView & Dialog綁在 某個activity底下
01/19 12:39, 4F

01/20 02:52, , 5F
請問一下為何要removeView? 另外Constructor中已經帶入
01/20 02:52, 5F

01/20 02:53, , 6F
context 為何不使用該context 而是使用getContext()?
01/20 02:53, 6F

01/20 02:54, , 7F
不能將private DatePickerDailog dpd; 宣告為static 嗎?
01/20 02:54, 7F
removeView的問題,可能是我對於這個架構不是很懂,看log後做的測試 我也還在測試中,看要怎麼處理這個部分。 context的原因是因為我是用 constructor (){ init(); } init(){ dtp =...; } 的方式去做。所以用getContext去取這個textView的Context。 不知道這樣是否我的理解有誤呢? 至於static的問題,因為我想要一個textView綁一個datePickerDialog 方便讓我在xml中直接使用。 ※ 編輯: jacky951 (60.251.44.33), 01/21/2015 11:20:55

01/22 14:12, , 8F
可否提供該部分完整代碼或是專案做測試?
01/22 14:12, 8F
第一次用github,不知道這樣可不可以 https://github.com/ArJay951/test/blob/master/DateTextView *剛測試一下,在new datePickerDialog之後立馬show(),之後功能就正常。 結果雖然是我要的,不過不太懂過程,現在正在看source code理解中... ※ 編輯: jacky951 (60.251.44.33), 01/22/2015 16:19:51 ※ 編輯: jacky951 (60.251.44.33), 01/22/2015 16:39:48

01/22 17:59, , 9F
// setDatePickerViews(); 將他註解掉後就可跑了
01/22 17:59, 9F

01/22 17:59, , 10F
還沒仔細看那在幹嘛... 問題應該出在裡面 等下班幫你看
01/22 17:59, 10F
那個是用來設定是否顯示、年、月、日的設定 ※ 編輯: jacky951 (60.251.44.33), 01/22/2015 18:12:17

01/22 18:25, , 11F
http://ppt.cc/FNh1 趕時間的話建議用這下去改
01/22 18:25, 11F

01/22 18:27, , 12F
測試過可用...
01/22 18:27, 12F

01/22 18:28, , 13F
picker = datePickerDialog.getDatePicker();
01/22 18:28, 13F

01/22 18:39, , 14F
是不趕時間啦 就想了解是怎麼運作,學一下這樣。
01/22 18:39, 14F

01/22 18:39, , 15F
謝謝你喔~
01/22 18:39, 15F

01/22 21:57, , 16F
只知道原因出在 findDatePicker(ViewGroup group)
01/22 21:57, 16F

01/22 21:58, , 17F
只要有call就爆炸...
01/22 21:58, 17F

01/22 21:59, , 18F
picker = datePickerDialog.getDatePicker(); 改成這樣
01/22 21:59, 18F

01/22 21:59, , 19F
就可正常使用
01/22 21:59, 19F

01/22 22:04, , 20F
http://codepad.org/n1UccPi0 可隱藏欄位"年"
01/22 22:04, 20F

01/22 22:05, , 21F
用findDatePicker(ViewGroup group) 找datePicker一直
01/22 22:05, 21F

01/22 22:05, , 22F
return null... 我比較好奇為什麼要這樣做= =?
01/22 22:05, 22F

01/22 22:22, , 23F
雖然說其實代碼看起來沒啥問題.. 恕小弟不才幫不上忙了.
01/22 22:22, 23F

01/23 09:35, , 24F
不會啦 真的很感謝你~我再研究研究
01/23 09:35, 24F

01/23 09:41, , 25F
老實說我也不知道加findDatePicker是幹嘛的 哈
01/23 09:41, 25F

01/23 09:41, , 26F
可能是那個時候不知道沒研究到怎麼取datepicker的時候
01/23 09:41, 26F

01/23 09:42, , 27F
先用網路上人家的Code試看看的吧!
01/23 09:42, 27F
文章代碼(AID): #1Kl7owZF (AndroidDev)