无法启动整个应用程序的MainActivity上的空指针异常错误

时间:2014-07-02 14:47:21

标签: java android eclipse nullpointerexception

我正在申请一个登录页面,用户将提示输入他们的用户名和密码。 之后,将输入的用户名转到另一个显示“欢迎”的新页面。 在此页面中,它将显示用户可以选择查看的图表类别列表。 但是,当我尝试运行它时,应用程序会继续崩溃。 我运行调试,它说这是一个NullPointerException。

日志猫显示如上:

07-02 10:25:23.826: E/AndroidRuntime(1173): FATAL EXCEPTION: main
07-02 10:25:23.826: E/AndroidRuntime(1173): Process: com.nyp.exploregowhere, PID: 1173
07-02 10:25:23.826: E/AndroidRuntime(1173): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nyp.exploregowhere/com.nyp.exploregowhere.MainActivity}: java.lang.NullPointerException
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.os.Looper.loop(Looper.java:137)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread.main(ActivityThread.java:4998)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at java.lang.reflect.Method.invoke(Method.java:515)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at dalvik.system.NativeStart.main(Native Method)
07-02 10:25:23.826: E/AndroidRuntime(1173): Caused by: java.lang.NullPointerException
07-02 10:25:23.826: E/AndroidRuntime(1173):     at com.nyp.exploregowhere.MainActivity.onCreate(MainActivity.java:26)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.Activity.performCreate(Activity.java:5243)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-02 10:25:23.826: E/AndroidRuntime(1173):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)

这是我的MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) 
{

    userNameET = (EditText)findViewById(R.id.userNameET);
    LoginBT = (Button)findViewById(R.id.LoginBT);

    LoginBT.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            Intent myIntent = new Intent(MainActivity.this,LoginActivity.class);
            myIntent.putExtra("username", userNameET.getText().toString());
            startActivityForResult(myIntent,LOGIN_ACTIVITY_RESULT_CODE);
        }

    });


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

更改后的新错误代码:

07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.os.Looper.loop(Looper.java:137)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at android.app.ActivityThread.main(ActivityThread.java:4998)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at java.lang.reflect.Method.invoke(Method.java:515)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
07-02 11:15:50.836: E/AndroidRuntime(1444):     at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:0)

需要先在onCreate中调用super.onCreate和setContentView。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    userNameET = (EditText)findViewById(R.id.userNameET);
    LoginBT = (Button)findViewById(R.id.LoginBT);

    LoginBT.setOnClickListener(new View.OnClickListener()
    {

        @Override
        public void onClick(View arg0)
        {
            // TODO Auto-generated method stub
            Intent myIntent = new Intent(MainActivity.this,LoginActivity.class);
            myIntent.putExtra("username", userNameET.getText().toString());
            startActivityForResult(myIntent,LOGIN_ACTIVITY_RESULT_CODE);
        }
    });

}

答案 1 :(得分:0)

请在onCreate方法中添加以下行。

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

它假定相应的xml文件是activity_main.xml。 请务必在上面添加此语句

userNameET = (EditText)findViewById(R.id.userNameET);

如果您收到任何错误,请发表评论。

相关问题