作者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/cn.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