2017-10-06 3 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 sagt, dass die Variablen studentNumber und passWord möglicherweise nicht initialisiert wurden. Der Fehler zeigt in dieser Zeile:Variablen "studentNumber" und "passWord" wurden möglicherweise nicht initialisiert?

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

Was scheint das Problem zu sein? Ist es die Validierung des Formulars? Vielen Dank.

+4

Ändern Sie den Variablennamen Ihrer Strings. Die Variablennamen sind widersprüchlich. –

+0

Ich habe auch eine Antwort gegeben. Bitte verweisen Sie es. –

Antwort

0

Sie immer Fehler, weil der String Name und EditText Name Probe sind bitte Ihre Methode wie folgt ändern.

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

Danke. Das hat funktioniert. :) –

1

Sie erhalten Variable "StudentNumber" und "PassWord" wurde möglicherweise nicht initialisiert?

weil Ihr String Variablennamen und Ihr bearbeiten Textnamen sind beide gleich, so sind sie in Konflikt

nur Ihre String Variablennamen

diese

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

Verwendung ändern statt dessen

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

Zeichenfolge Variablennamen in onClick Methode ändern, Es ist mit EditText Variablennamen in Konflikt:

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

Sie können es auch direkt als Methodenparameter übergeben, da das Speichern in einem letzten Feld dort keinen Wert hat. –

+0

Ja. Richtig. Dafür gibt es zahlreiche Möglichkeiten. –

Verwandte Themen