Nach dem Einschalten Absenden-Button bekomme ich FehlereText.setError() Fatal error
04-30 11:08:19.990 14339-14339/hr.tosapinaetfos.quizmaker E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at hr.tosapinaetfos.quizmaker.RegisterActivity.isEmpty(RegisterActivity.java:72)
at hr.tosapinaetfos.quizmaker.RegisterActivity.registerOnclick(RegisterActivity.java:58)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Hier Code ist
public class RegisterActivity extends AppCompatActivity{
EditText username;
EditText password;
EditText passwordAgain;
Spinner accountTypeSpinner;
Button registerButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
//Fetch registerbutton by id
Button registerButton = (Button) findViewById(R.id.registerButton);
//Fetch username, password,passwordAgain , accountTypeSpinner by id
EditText username = (EditText) findViewById(R.id.registerUsername);
EditText password = (EditText) findViewById(R.id.registerPassword);
EditText passwordAgain = (EditText) findViewById(R.id.registerPasswordAgain);
Spinner accountTypeSpinner = (Spinner) findViewById(R.id.registerSpinner);
}
public void registerOnclick(View v){
//Get text from objects
String strUsername = username.getText().toString();
String strPassword = password.getText().toString();
String strPassowrdAgain = passwordAgain.getText().toString();
String accounttype = accountTypeSpinner.getSelectedItem().toString();
if(isEmpty(strUsername,strPassword,strPassowrdAgain) == false){
Toast.makeText(this, "this is text", Toast.LENGTH_LONG).show();
}
}//End of registerOnclick
public Boolean isEmpty(String strUsername, String strPassword, String strPassowrdAgain){
Boolean isThereEmptyFields = false;
if (strUsername.length() == 0) {
Log.d("test", "before set error");
username.setError("First name is required!");
Log.d("test", "after set error");
isThereEmptyFields =true;
}
if (strPassword.length() == 0) {
password.setError("First name is required!");
isThereEmptyFields =true;
}
if (strPassowrdAgain.length() == 0) {
passwordAgain.setError("First name is required!");
isThereEmptyFields =true;
}
return isThereEmptyFields;
}
}
Methode setError() verursacht schwere Ausnahme ..wenn i benutze setError() in der Funktion registerOnclick (View v) es funktioniert gut, aber ich muss neue Funktion erstellen isEmpty()
zu überprüfen, kann ich nicht sehen 'username' innerhalb 'isEmpty()' deklariert. Ist es Klassenumfang oder was? Können Sie den vollständigen Klassencode angeben? –
@MaximBerezovsky aktualisiert – Tomislav
move 'EditText Benutzername = (EditText) findViewById (R.id.registerUsername); EditText Passwort = (EditText) findViewById (R.id.registerPassword); EditText passwordAgain = (EditText) findViewById (R.id.registerPasswordAgain); ' zum Abschnitt' onCreate() ', so dass sie vor der Referenzierung initialisiert werden. –