android 方面一个小问题,各位大神快来围观!

移动开发 码拜 10年前 (2015-04-25) 1055次浏览 0个评论

环境 :android studio

构造函数中,开始声明了一个TextView  
public class MainActivity extends ActionBarActivity {
    private TextView  MyTextView = null;

onCreate方法中我写下了findViewById:
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyTextView = (TextView)this.findViewById(R.id.mytextview_id );
        MyTextView.setText(“第一个TextView”);

虽然能够正常运行,但是竟然出现了错误:
 Process: com.zhangjw.buttonandtext, PID: 4428
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.zhangjw.buttonandtext/com.zhangjw.buttonandtext.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method “”android.view.View android.view.Window.findViewById(int)”” on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method “”android.view.View android.view.Window.findViewById(int)”” on a null object reference
            at android.app.Activity.findViewById(Activity.java:2071)
            at com.zhangjw.buttonandtext.MainActivity.<init>(MainActivity.java:12)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.Class.newInstance(Class.java:1572)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
????????????at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
????????????at android.app.ActivityThread.access$800(ActivityThread.java:144)
????????????at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
????????????at android.os.Handler.dispatchMessage(Handler.java:102)
????????????at android.os.Looper.loop(Looper.java:135)
????????????at android.app.ActivityThread.main(ActivityThread.java:5221)
????????????at java.lang.reflect.Method.invoke(Native Method)
????????????at java.lang.reflect.Method.invoke(Method.java:372)
????????????at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
????????????at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

希望各位大神能迅速为我答疑解惑.  为什么 出现空指针的问题?

android 方面一个小问题,各位大神快来围观!
20分
Attempt to invoke virtual method “”android.view.View android.view.Window.findViewById(int)”” on a null object reference
翻译:试图在视图android.view.Window.findViewById(int)“空对象引用上调用虚拟方法。不给你报空指针才怪嘞。
 private TextView  MyTextView = null;  改成 
 private TextView  MyTextView ; 或者  private TextView  MyTextView = new TextView(this);
android 方面一个小问题,各位大神快来围观!
谢谢谢谢!!!!       对,我也刚才发现把这个 =null  去掉就行了.  哎, 我这是以为在  MyTextView = (TextView)this.findViewById(R.id.mytextview_id );这个地方才创建实例,   主要是C++养成的习惯 .是在声明 的时候 就给个Null
android 方面一个小问题,各位大神快来围观!
引用 2 楼 a215508412 的回复:

谢谢谢谢!!!!       对,我也刚才发现把这个 =null  去掉就行了.  哎, 我这是以为在  MyTextView = (TextView)this.findViewById(R.id.mytextview_id );这个地方才创建实例,   主要是C++养成的习惯 .是在声明 的时候 就给个Null

能不逗吗?成员对象变量默认的初始化就是null你显示跟隐式有区别么

android 方面一个小问题,各位大神快来围观!
引用 3 楼 qq122810986 的回复:
Quote: 引用 2 楼 a215508412 的回复:

谢谢谢谢!!!!       对,我也刚才发现把这个 =null  去掉就行了.  哎, 我这是以为在  MyTextView = (TextView)this.findViewById(R.id.mytextview_id );这个地方才创建实例,   主要是C++养成的习惯 .是在声明 的时候 就给个Null

能不逗吗?成员对象变量默认的初始化就是null你显示跟隐式有区别么

我也觉得没啥区别。为什么他改了之后就没问题了呢?什么原因?求解释。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android 方面一个小问题,各位大神快来围观!
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!