2014-02-12 235 views

回答

2

您必須查看層次加載的時候調用findViewById()真正得到視圖的情況下否則會爲空。

在你的下面的代碼的觀點是從兩個不同的佈局,只有從當前佈局的意見將被初始化和其他人將是無效造成NullPointerException

login = (Button) findViewById(R.id.button1); 
register = (Button) findViewById(R.id.button2); 
r_username = (EditText) findViewById(R.id.username); 
r_password = (EditText) findViewById(R.id.password); 
r_email = (EditText) findViewById(R.id.email); 
username = (EditText) findViewById(R.id.editText1); 
password = (EditText) findViewById(R.id.editText2); 
registerForm = (Button) findViewById(R.id.register); 

而且在你的下面的代碼已設置點擊監聽registerForm通過類型轉換按鈕進入OnClickListener按鈕,可引起ClassCastException:你的按鈕

register.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     setContentView(R.layout.register); 
     registerForm.setOnClickListener((OnClickListener) register); 
    } 
}); 
1

檢查並確認該領域是否存在於activity_main.xml中 。

login = (Button) findViewById(R.id.button1); 
register = (Button) findViewById(R.id.button2); 
r_username = (EditText) findViewById(R.id.username); 
r_password = (EditText) findViewById(R.id.password); 
r_email = (EditText) findViewById(R.id.email); 
username = (EditText) findViewById(R.id.editText1); 
password = (EditText) findViewById(R.id.editText2); 
registerForm = (Button) findViewById(R.id.register); 
1

activity_main佈局不具有視圖ID爲register和你registerform仍然null

獲取參考register觀點與findViewById()當您的視圖層次實際上有這種看法,即第二setContentView()後(有另一個setContentView()是不是順便說一個好主意)。

此外,你應該在問題中包含相關的代碼和異常堆棧跟蹤,而不僅僅是鏈接到一個github項目。

0

Intiallize你的按鈕,在你的活動EditTexts ..

這樣: -

login = (Button) findViewById(R.id.button1); 
register = (Button) findViewById(R.id.button2); 
r_username = (EditText) findViewById(R.id.username); 
r_password = (EditText) findViewById(R.id.password); 
r_email = (EditText) findViewById(R.id.email); 
username = (EditText) findViewById(R.id.editText1); 
password = (EditText) findViewById(R.id.editText2); 
registerForm = (Button) findViewById(R.id.register);