2013-05-29 28 views
0

我試圖通過按下按鈕來打開活動包含5個編輯文本和1個微調框 當我按下按鈕時顯示不幸關閉login.apk。按鈕點擊顯示android中的java.lang.null指針異常

這裏是registartion的.java

public class Registration extends Activity { 
EditText name,password,email,dob,design,cpassword; 
Button submit,cancel; 
Spinner gender; 
SQLiteDatabase db; 
String Gen; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.registration); 
    name=(EditText)findViewById(R.id.editText1); 
    email=(EditText) findViewById(R.id.editText2); 
    gender=(Spinner) findViewById(R.id.spinner1); 
    dob=(EditText) findViewById(R.id.editText3); 
    design=(EditText) findViewById(R.id.editText4); 
    password=(EditText) findViewById(R.id.editText5); 
    cpassword=(EditText) findViewById(R.id.editText6); 

    db=openOrCreateDatabase("MobWalletDB",MODE_PRIVATE, null); 
    List<String> list=new ArrayList<String>(); 
    list.add("Male"); 
    list.add("Female"); 
    ArrayAdapter<String> mAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list); 
    mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    gender.setAdapter(mAdapter); 

    submit.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 

      MODELUserData userGivenDataObject=new MODELUserData(name.getText().toString() 
                   ,email.getText().toString(),Gen,dob.getText().toString(),design.getText().toString(),password.getText().toString()); 

      if(QUERYUserReg.registerUser(db, userGivenDataObject)){ 
       Toast.makeText(getBaseContext(), "User Registered!!!", Toast.LENGTH_SHORT).show(); 
       startActivity(new Intent(Registration.this,Login.class)); 

      }else 
       Toast.makeText(getBaseContext(), "Registration Failure!!!", Toast.LENGTH_SHORT).show();    

     } 
    }); 

    gender.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int in, 
       long lg) { 
      // TODO Auto-generated method stub 
      Gen=parent.getItemAtPosition(in).toString(); 
     } 
    }); 

} 

}

的代碼片段和logcat中顯示以下錯誤

05-29 07:22:48.331: E/AndroidRuntime(13236): FATAL EXCEPTION: main05-29 07:22:48.331:  
E/AndroidRuntime(13236): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.login/com.example.login.Registration}: java.lang.NullPointerException 
... 
... 

05-29 07:22:48.331: E/AndroidRuntime(13236): Caused by: java.lang.NullPointerException 
05-29 07:22:48.331: E/AndroidRuntime(13236): at com.example.login.Registration.onCreate(Registration.java:49) 
05-29 07:22:48.331: E/AndroidRuntime(13236): at android.app.Activity.performCreate(Activity.java:5104) 
05-29 07:22:48.331: E/AndroidRuntime(13236): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
05-29 07:22:48.331: E/AndroidRuntime(13236): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
05-29 07:22:48.331: E/AndroidRuntime(13236): ... 11 more 

請告訴我什麼錯誤?
在此先感謝

+3

後Registration.onCreate – Blackbelt

+0

請發表您的代碼。我們掌握的信息越多,我們就越容易找到問題。 – knennigtri

+0

其中是Registration.java中的行號49? –

回答

0

你永遠不會初始化submit。在Jave中,你不能聲明和使用一個對象而不創建它(你應該調用它的新運算符)。也許你錯過了submit

1

findViewById我認爲墜機是在這裏:

submit.setOnClickListener(new View.OnClickListener() { 

你缺少一個:

submit = (Button) findViewById(R.id.submit); // Or whatever your ID is 

您還需要初始化cancel

+0

問題解決了,謝謝 – user1922355

0

初始化您的提交和取消按鈕。你是一個非初始化的變量

submit = (Button) findViewById(R.id.id_of_your_submit_button); 
cancel= (Button) findViewById(R.id.id_of_your_cancel_button); 
0

您提交不inintialized上註冊Activity.butü使用的onclick監聽器提交button.so初始化它first.hope烏爾問題可能得到解決按鈕ID寫入onClickListener。

0

試試這個代碼:

submit = (Button) findViewById(R.id.yourID); 
Submit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     // your code here 
    } 
} 
+0

歡迎來到Stack Overflow,當回答問題時,請嘗試解釋爲什麼您在回覆中發佈了代碼。 – KyleMit