作者jacky951 (藍憶)
看板AndroidDev
標題[問題] TextView OnClick showDialog事件
時間Mon Jan 19 11:40:22 2015
各位前輩好:
我想寫一個日期專用的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://webptt.com/m.aspx?n=bbs/AndroidDev/M.1421638842.A.8CF.html
※ 編輯: jacky951 (60.251.44.33), 01/19/2015 11:41:30
2F:→ jacky951: 那個已經google 過了 不過沒有跟我一樣的情況 01/19 12:38
3F:→ jacky951: 我也知道setContetView這個動作必須在requsetF...之前 01/19 12:39
4F:→ jacky951: 重點在於如何把textView & Dialog綁在 某個activity底下 01/19 12:39
5F:→ skypiece: 請問一下為何要removeView? 另外Constructor中已經帶入 01/20 02:52
6F:→ skypiece: context 為何不使用該context 而是使用getContext()? 01/20 02:53
7F:→ skypiece: 不能將private DatePickerDailog dpd; 宣告為static 嗎? 01/20 02:54
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
8F:→ skypiece: 可否提供該部分完整代碼或是專案做測試? 01/22 14:12
第一次用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
9F:→ skypiece: // setDatePickerViews(); 將他註解掉後就可跑了 01/22 17:59
10F:→ skypiece: 還沒仔細看那在幹嘛... 問題應該出在裡面 等下班幫你看 01/22 17:59
那個是用來設定是否顯示、年、月、日的設定
※ 編輯: jacky951 (60.251.44.33), 01/22/2015 18:12:17
12F:→ skypiece: 測試過可用... 01/22 18:27
13F:→ skypiece: picker = datePickerDialog.getDatePicker(); 01/22 18:28
14F:→ jacky951: 是不趕時間啦 就想了解是怎麼運作,學一下這樣。 01/22 18:39
15F:→ jacky951: 謝謝你喔~ 01/22 18:39
16F:→ skypiece: 只知道原因出在 findDatePicker(ViewGroup group) 01/22 21:57
17F:→ skypiece: 只要有call就爆炸... 01/22 21:58
18F:→ skypiece: picker = datePickerDialog.getDatePicker(); 改成這樣 01/22 21:59
19F:→ skypiece: 就可正常使用 01/22 21:59
21F:→ skypiece: 用findDatePicker(ViewGroup group) 找datePicker一直 01/22 22:05
22F:→ skypiece: return null... 我比較好奇為什麼要這樣做= =? 01/22 22:05
23F:→ skypiece: 雖然說其實代碼看起來沒啥問題.. 恕小弟不才幫不上忙了. 01/22 22:22
24F:→ jacky951: 不會啦 真的很感謝你~我再研究研究 01/23 09:35
25F:→ jacky951: 老實說我也不知道加findDatePicker是幹嘛的 哈 01/23 09:41
26F:→ jacky951: 可能是那個時候不知道沒研究到怎麼取datepicker的時候 01/23 09:41
27F:→ jacky951: 先用網路上人家的Code試看看的吧! 01/23 09:42