2013-01-20 47 views
-1

我只是編程一個密碼管理器,但每次運行它時,它都會因爲NullPointerException而崩潰。我檢查了代碼,但我是一名新開發人員。這裏有人知道爲什麼? :(Java應用程序崩潰(NullPointerException)

代碼MainActivity.java的:

package de.lennartschoch.passwordmanager; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

Button login; 
EditText masterpassfield; 
static String masterpass; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    login = (Button) findViewById(R.id.login); 
    masterpass = ""; 
    masterpassfield = (EditText) findViewById(R.id.masterpass); 

    if(masterpass.equals("")) { 

     Intent intent = new Intent(this,NewMasterpass.class); 
     startActivity(intent); 
     return; 
    } 

    login.setOnClickListener(new OnClickListener() { 


     @Override 
     public void onClick(View view) { 

      if(masterpassfield.getText().toString().equals(masterpass)) { 

       Intent success = new Intent(view.getContext(), Passwords.class); 
       startActivityForResult(success, 0); 

      } 

     }}); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

} 

代碼NewMasterpass.java的:

package de.lennartschoch.passwordmanager; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class NewMasterpass extends Activity { 

EditText masterpasscreate; 
EditText repeat; 
Button finish; 
TextView mistake; 

/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new_masterpass); 

    masterpasscreate = (EditText) findViewById(R.id.masterpasscreate); 
    repeat = (EditText) findViewById(R.id.repeatcreate); 
    finish = (Button) findViewById(R.id.finish); 
    mistake = (TextView) findViewById(R.id.mistake); 

    finish.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      if(!masterpasscreate.getText().toString().equals(repeat.getText().toString())) { 

       mistake.setText("The passwords are different."); 
       mistake.setTextColor(Color.RED); 

      } 
      else if(masterpasscreate.getText().toString().equals("") || repeat.getText().toString().equals("")) { 

       mistake.setText("Both textfields must be filled in"); 
       mistake.setTextColor(Color.RED); 

      } 
      else { 

       MainActivity.masterpass = masterpasscreate.getText().toString(); 
       Intent myIntent = new Intent(view.getContext(), MainActivity.class); 
       startActivityForResult(myIntent, 0); 
      } 

     }}); 


} 
} 

logcat的錯誤:

01-20 17:17:52.629: D/AndroidRuntime(561): Shutting down VM 
01-20 17:17:52.629: W/dalvikvm(561): threadid=1: thread exiting with uncaught exception   (group=0x409961f8) 
01-20 17:17:52.639: E/AndroidRuntime(561): FATAL EXCEPTION: main 
01-20 17:17:52.639: E/AndroidRuntime(561): java.lang.RuntimeException: Unable to start activity   ComponentInfo{de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.MainActivit y}: java.lang.NullPointerException 
01-20 17:17:52.639: E/AndroidRuntime(561): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.os.Looper.loop(Looper.java:137) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-20 17:17:52.639: E/AndroidRuntime(561): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 17:17:52.639: E/AndroidRuntime(561): at java.lang.reflect.Method.invoke(Method.java:511) 
01-20 17:17:52.639: E/AndroidRuntime(561): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-20 17:17:52.639: E/AndroidRuntime(561): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-20 17:17:52.639: E/AndroidRuntime(561): at dalvik.system.NativeStart.main(Native Method) 
01-20 17:17:52.639: E/AndroidRuntime(561): Caused by: java.lang.NullPointerException 
01-20 17:17:52.639: E/AndroidRuntime(561): at de.lennartschoch.passwordmanager.MainActivity.onCreate(MainActivity.java:26) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.Activity.performCreate(Activity.java:4465) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-20 17:17:52.639: E/AndroidRuntime(561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
01-20 17:17:52.639: E/AndroidRuntime(561): ... 11 more 
01-20 17:17:57.129: I/Process(561): Sending signal. PID: 561 SIG: 9 
01-20 17:21:37.499: D/AndroidRuntime(608): Shutting down VM 
01-20 17:21:37.499: W/dalvikvm(608): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
01-20 17:21:37.511: E/AndroidRuntime(608): FATAL EXCEPTION: main 
01-20 17:21:37.511: E/AndroidRuntime(608): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass}; have you declared this activity in your AndroidManifest.xml? 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.os.Looper.loop(Looper.java:137) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-20 17:21:37.511: E/AndroidRuntime(608): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 17:21:37.511: E/AndroidRuntime(608): at java.lang.reflect.Method.invoke(Method.java:511) 
01-20 17:21:37.511: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-20 17:21:37.511: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-20 17:21:37.511: E/AndroidRuntime(608): at dalvik.system.NativeStart.main(Native Method) 
01-20 17:21:37.511: E/AndroidRuntime(608): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass}; have you declared this activity in your AndroidManifest.xml? 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1508) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Activity.startActivityForResult(Activity.java:3190) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Activity.startActivity(Activity.java:3297) 
01-20 17:21:37.511: E/AndroidRuntime(608): at de.lennartschoch.passwordmanager.MainActivity.onCreate(MainActivity.java:30) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Activity.performCreate(Activity.java:4465) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-20 17:21:37.511: E/AndroidRuntime(608): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
01-20 17:21:37.511: E/AndroidRuntime(608): ... 11 more 
01-20 17:22:30.769: D/AndroidRuntime(655): Shutting down VM 
01-20 17:22:30.769: W/dalvikvm(655): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
01-20 17:22:30.779: E/AndroidRuntime(655): FATAL EXCEPTION: main 
01-20 17:22:30.779: E/AndroidRuntime(655): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass}; have you declared this activity in your AndroidManifest.xml? 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.os.Looper.loop(Looper.java:137) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-20 17:22:30.779: E/AndroidRuntime(655): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 17:22:30.779: E/AndroidRuntime(655): at java.lang.reflect.Method.invoke(Method.java:511) 
01-20 17:22:30.779: E/AndroidRuntime(655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-20 17:22:30.779: E/AndroidRuntime(655): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-20 17:22:30.779: E/AndroidRuntime(655): at dalvik.system.NativeStart.main(Native Method) 
01-20 17:22:30.779: E/AndroidRuntime(655): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass}; have you declared this activity in your AndroidManifest.xml? 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1508) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Activity.startActivityForResult(Activity.java:3190) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Activity.startActivity(Activity.java:3297) 
01-20 17:22:30.779: E/AndroidRuntime(655): at de.lennartschoch.passwordmanager.MainActivity.onCreate(MainActivity.java:30) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Activity.performCreate(Activity.java:4465) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-20 17:22:30.779: E/AndroidRuntime(655): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
01-20 17:22:30.779: E/AndroidRuntime(655): ... 11 more 
01-20 17:22:33.180: I/Process(655): Sending signal. PID: 655 SIG: 9 
+1

後完整的錯誤。它會告訴你問題發生的確切路線。 –

+7

您需要查看異常來確定發生的位置。它應該顯示出問題的確切路線。學習理解堆棧跟蹤併爲自己診斷錯誤對於開發人員來說是非常重要的技能。 –

+1

錯誤不能更清楚我會說:'引起:android.content.ActivityNotFoundException:無法找到顯式活動類{de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass};你有沒有在你的AndroidManifest.xml中聲明這個活動?' –

回答

0

聲明NewMasterPass活動的清單XML如logcat中明確提到的那樣!

+0

謝謝,我想我必須學習如何使用logcat:D –

1

它要求:

01-20 17:22:30.779: E/AndroidRuntime(655): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {de.lennartschoch.passwordmanager/de.lennartschoch.passwordmanager.NewMasterpass}; 

have you declared this activity in your AndroidManifest.xml? 

你有沒有?

0

嘗試這種從logcat的添加到您的AndroidManifest.xml

<activity android:name="de.lennartschoch.passwordmanager.NewMasterpass" /> 
相關問題