I have a boolean method in a class made in Java for Android, however, the return of the array variable that I am using marks an error every time I use it in the activity where I want it to be.
This is my method: (The class is called Querys)
public String[] getAlumnos(Context context, String usuario) {
String[] alumnos = new String[50];
return alumnos;
}
This is the code of my activity where I am trying to get the value of said method and assign it to a new array:
Querys q = new Querys();
String[] alumnos = q.getAlumnos(this, usuario); // <--- Aquí es el problema
q.getAlumnos(this, usuario); // <--- Pues si lo uso sin asignarle el valor que retorna a ninguna variable, hace todo el trabajo perfectamente bien.
This is the only thing I've been able to get as a "bug" if you can call it that.
2020-08-21 22:27:53.970 9073-9073/com.example.apk E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.apk, PID: 9073
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:453)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:415)
at android.widget.Spinner.measureContentWidth(Spinner.java:856)
at android.widget.Spinner.onMeasure(Spinner.java:606)
at androidx.appcompat.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:428)
at android.view.View.measure(View.java:23196)
at androidx.constraintlayout.widget.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
at android.view.View.measure(View.java:23196)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:23196)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:23196)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:23196)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:23196)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:720)
at android.view.View.measure(View.java:23196)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2802)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1647)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1930)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1535)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7405)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1044)
at android.view.Choreographer.doCallbacks(Choreographer.java:839)
at android.view.Choreographer.doFrame(Choreographer.java:774)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1030)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6864)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
The error has nothing to do with Android but is a misunderstanding with the fixes.
String[] alumnos = new String[50];
that code creates an array of typeString
with 50 positions but each position isnull
.Before trying to access an object in an array position it must have been put there, for example: