Reputation: 643
package org.example.mbtiapplication;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class MBTITest extends Activity implements OnItemSelectedListener {
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1);
Spinner secondSpinner = (Spinner) findViewById(R.id.spinner2);
Spinner thirdSpinner = (Spinner) findViewById(R.id.spinner3);
Spinner fourthSpinner = (Spinner) findViewById(R.id.spinner4);
ArrayList<String> Evaluator = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mbtitest);
addItemsOnSpinner1();
addItemsOnSpinner2();
addItemsOnSpinner3();
addItemsOnSpinner4();
}
public void addItemsOnSpinner1(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner2(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner2);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner3(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner3);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
public void addItemsOnSpinner4(){
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner4);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.spinnerarraybool, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
firstSpinner.setAdapter(adapter);
}
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
long arg3) {
switch (parent.getId()){
case R.id.spinner1:
String firstAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(firstAnswer);
case R.id.spinner2:
String secondAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(secondAnswer);
case R.id.spinner3:
String thirdAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(thirdAnswer);
case R.id.spinner4:
String fourthAnswer = firstSpinner.getSelectedItem().toString();
Evaluator.add(fourthAnswer);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
Stacktrace:
11-24 14:06:55.778: E/AndroidRuntime(1842): FATAL EXCEPTION: main
11-24 14:06:55.778: E/AndroidRuntime(1842): Process: org.example.mbtiapplication, PID: 1842
11-24 14:06:55.778: E/AndroidRuntime(1842): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.example.mbtiapplication/org.example.mbtiapplication.MBTITest}: java.lang.NullPointerException
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2102)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.access$700(ActivityThread.java:135)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.os.Handler.dispatchMessage(Handler.java:102)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.os.Looper.loop(Looper.java:137)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.reflect.Method.invokeNative(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.reflect.Method.invoke(Method.java:515)
11-24 14:06:55.778: E/AndroidRuntime(1842): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-24 14:06:55.778: E/AndroidRuntime(1842): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-24 14:06:55.778: E/AndroidRuntime(1842): at dalvik.system.NativeStart.main(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): Caused by: java.lang.NullPointerException
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.Activity.findViewById(Activity.java:1883)
11-24 14:06:55.778: E/AndroidRuntime(1842): at org.example.mbtiapplication.MBTITest.<init>(MBTITest.java:15)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.Class.newInstanceImpl(Native Method)
11-24 14:06:55.778: E/AndroidRuntime(1842): at java.lang.Class.newInstance(Class.java:1208)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
11-24 14:06:55.778: E/AndroidRuntime(1842): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
11-24 14:06:55.778: E/AndroidRuntime(1842): ... 11 more
When I press on my button to start my new activity, I get this in my log cat and an error telling me that my application has stopped. I am not sure on how to fix this issue still after doing some research and would like to know how I can fix this problem as it occurs. Thank you
Upvotes: 0
Views: 249
Reputation: 133570
Move the initialization in onCreate
after setContentView
as below
Spinner firstSpinner ;
Spinner secondSpinner ;
Spinner thirdSpinner;
Spinner fourthSpinner ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mbtitest);
// initialize after setting the layout to the activity
firstSpinner = (Spinner) findViewById(R.id.spinner1);
secondSpinner = (Spinner) findViewById(R.id.spinner2);
thirdSpinner = (Spinner) findViewById(R.id.spinner3);
fourthSpinner = (Spinner) findViewById(R.id.spinner4);
... //rest of the code
}
Also there is no need to initialize spinner again remove the spinner initialization in addItemsOnSpinner2()
just use firstSpinner since its a class memner. Same for others.
Spinner firstSpinner = (Spinner) findViewById(R.id.spinner2);
Upvotes: 1