The key part is here:
Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
Further down the stacktrace:
at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153)
at com.example.testqstn.MainActivity.<init>(MainActivity.java:39)
So you're initializing an ArrayAdapter
as a member variable of your MainActivity
, specifically on row 39 of MainActivity.java
. You can't do that. You can declare it as a member variable but initialize it (with new
) in onCreate()
or later.
From your updated question code, replace the declaration+initialization
ArrayAdapter<String> myAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listYear);
with just declaration
ArrayAdapter<String> myAdapter1;
and move the initialization
myAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listYear);
to somewhere between onCreate()
and where myAdapter1
is used for the first time.