[问题] private 差异性

楼主: phreat (待价而孤)   2015-12-17 11:49:36
抱歉小的又来发新手问题了
自行测试了几段程式码
看到有人会这样写
Button button = (Button) findViewById(R.id.button);
也看到也有其它人程式写法为
http://www.codedata.com.tw/mobile/android-tutorial-the-2nd-class-3-interaction/
7-3第三段程式
"TextView show_app_name = (TextView) findViewById(R.id.show_app_name);"
于是就把自己的改成这样
TextView textView = (TextView) findViewById(R.id.textView);
EditText editText = (EditText) findViewById(R.id.editText);
发现都会错误
正常运作程式码
http://ideone.com/DcAQgX
正常运作程式码
http://ideone.com/NmOVb0 (改写第4 15 16 行
无法运作
http://ideone.com/kXthiF (改写第3 12 13 行
错误在第23行 textView123
还请大大们开示>< 刚入门跌跌撞撞的
作者: Jasonzheng (jason)   2015-12-17 12:09:00
这是当然 跟private没关系TextView textView=xxxxxxx前面大写的TextView是类别名称后面小写是自行取的物件名称你在onCreate 的finview 是为了把元件指全域变量不用在onCreate再实例一次把onCreate中的类别名称(开头大写的) 删掉即可
作者: kiwatami (悠游自在)   2015-12-17 15:30:00
我猜你是报 NullPointerException?因为你的 onClickListener 是一个新的 Instance所以他会取用 class 的成员而不是你的区域变量如果你把成员拿掉就要把区域变量宣告成final而当初IDE没有阻止尚未初始化的变量使用也是因为那个是新的 Instance 而无从判断如果我没看错的话 7-3 在 onClickListener 里面好像没用到区域变量这个部分的确是 java 的观念喔 不过写久了也会知道建议是遇到问题再查 才不会看一堆又忘记当然能先看是最好 有个印象也比较好下关键字
作者: Jasonzheng (jason)   2015-12-18 14:04:00
我是说要把"B"utton拿掉啦@@ button留着全域与区域的概念
作者: Santez (SanTez)   2015-12-20 00:30:00
要把textView123宣告放置onCreate外面还有另一种是直接:((TextView)find..()).setText(..)
作者: Jasonzheng (jason)   2015-12-20 10:15:00
不用放外面 除非有用到区域方法如onClick

Links booklink

Contact Us: admin [ a t ] ucptt.com