2017-10-06 35 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

是的。正确。这有很多方法。 –

相关问题