2017-10-06 37 views
0
public class LoginActivity extends AppCompatActivity implements View.OnClickListener { 

public EditText studentNumber, passWord; 
//defining AwesomeValidation object 
public AwesomeValidation awesomeValidation; 

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

    awesomeValidation = new AwesomeValidation(ValidationStyle.BASIC); 
    studentNumber = (EditText) findViewById(R.id.studentNumber); 
    passWord = (EditText) findViewById(R.id.passWord); 

    awesomeValidation.addValidation(this, R.id.studentNumber, "^[0-9]{9}", R.string.studentnumberError); 
    String regexPassword = ".{8,}"; 
    awesomeValidation.addValidation(this, R.id.passWord, regexPassword, R.string.invalid_password); 

    signIn.setOnClickListener(this); 
} 

// Triggers when LOGIN Button clicked 
@Override 
public void onClick(View view) { 
    if (view == signIn) { 
     checkLogin(); 
    } 
} 

public void checkLogin() { 

    // Get text from studentNumber and passWord field 
    final String studentNumber = studentNumber.getText().toString(); 
    final String passWord = passWord.getText().toString(); 

    // Initialize AsyncLogin() class with studentNumber and password 
    new AsyncLogin().execute(studentNumber,passWord); 

    } 
} 

Android Studio說變量studentNumber和passWord可能沒有被初始化。錯誤顯示在此行上:變量「studentNumber」和「passWord」可能沒有被初始化?

final String studentNumber = studentNumber.getText().toString(); 
final String passWord = passWord.getText().toString(); 

什麼似乎是問題?這是表單的驗證嗎?謝謝。

+4

更改字符串的變量名稱。變量名稱是衝突的。 –

+0

我也給出了答案。請參考。 –

回答

0

你越來越錯誤,因爲字符串名稱和姓名的EditText是樣品,請改變你的方法是這樣的。

public void checkLogin() { 

    // Get text from studentNumber and passWord field 
    final String studentNum = studentNumber.getText().toString(); 
    final String pass= passWord.getText().toString(); 

    // Initialize AsyncLogin() class with studentNumber and password 
    new AsyncLogin().execute(studentNum,pass); 

    } 
+0

謝謝。這工作。 :) –

1

你會得到變量「studentNumber」和「passWord」可能沒有被初始化?

,因爲你的字符串變量的名字和編輯文本的名字都是相同的,所以它們是相互矛盾的

只是改變你的字符串變量名

使用本

final String studentNumber2 = studentNumber.getText().toString(); 
final String passWord2 = passWord.getText().toString(); 

而不是這個

final String studentNumber = studentNumber.getText().toString(); 
final String passWord = passWord.getText().toString(); 
2

中的onClick方法更改字符串變量的名字,這是相互矛盾與EditText上的變量名:

public void checkLogin() { 

// Get text from studentNumber and passWord field 
final String studentNumberString = studentNumber.getText().toString(); 
final String passWordString = passWord.getText().toString(); 

// Initialize AsyncLogin() class with studentNumber and password 
new AsyncLogin().execute(studentNumberString,passWordString); 

} 
} 
+1

您也可以直接將其作爲方法參數傳遞,因爲將它們存儲在最終字段中沒有任何價值。 –

+0

是的。正確。這有很多方法。 –

相關問題