1

I am working on a Android code that returns me String values that I store in a String array.I want to use this String array to populate one of my Spinners.

My main intention is that depending on what the user selects in 1st spinner , I want to populate my 2nd spinner using my String array.

However, when I try I am getting a NullPointerException even when I am populating the adapter

My Android code:

public class Mark2 extends Activity 
{
  private static final String SOAP_ACTION = "http://tempuri.org/getData";
  private static final String METHOD_NAME = "getData";
  private static final String NAMESPACE = "http://tempuri.org/";
  private static final String URL = "http://10.0.2.2/getsubject/Service1.asmx"; 


  private Spinner s;
  private Spinner s2;
  private Spinner s3;

@Override
    protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.mainspinner);

    s = (Spinner) findViewById(R.id.spinner1);
    s2 = (Spinner) findViewById(R.id.spinner2);


    String[] myList4=call();
    for(int i=0;i<myList4.length;i++)
    System.out.println(myList4[i]);

    String[] myList = new String[] {"First half","Second Half"};
    String[] myList2=new  String[] {
                                           "abc",
                                   "ghf", 
                                   "ijk",                             
                                   };

    String[] myList3=new String[]  {
                            "john",
                            "ann", 
                            "joe",

                                   };

   s.setAdapter(new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, myList));
    s2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList2));


    final ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList4);
    final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList3);


    s.setOnItemSelectedListener(new OnItemSelectedListener()
    {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,int pos, long id) 
        {

        if(parent.getItemAtPosition(pos).toString().equalsIgnoreCase("First half"))
        {
           s2.setSelection(pos);
           s3.setAdapter(adapter3);
        }
        else
        {
            s2.setAdapter(adapter2);
            s2.setSelection(pos);


        }

        }



        @Override
        public void onNothingSelected(AdapterView<?> arg0) {


        }});


}

public String[] call()
{
    SoapPrimitive responsesData = null; 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( 
    SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.debug = true; 

    try {

    androidHttpTransport.call(SOAP_ACTION, envelope);

    responsesData = (SoapPrimitive) envelope.getResponse(); 
    System.out.println(" --- response ---- " + responsesData); 

    } catch (SocketException ex) { 
    ex.printStackTrace(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

    System.out.println( " ----" + responsesData );

    String serviceResponse= responsesData .toString(); 


    String[] temp; 
    String delimiter = "#"; 
    temp= serviceResponse.split(delimiter);
    System.out.println( " ---- length ---- " + temp.length); 

    return temp; 


   }      


  }

My logcat:

 11-17 15:51:09.668: DEBUG/dalvikvm(125): GC_EXPLICIT freed 1220 objects / 68272 bytes in 164ms
 11-17 16:20:29.649: ERROR/AndroidRuntime(620): java.lang.NullPointerException
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at com.example.Mark2$1.onItemSelected(Mark2.java:88)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:864)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.widget.AdapterView.access$200(AdapterView.java:42)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at  android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:830)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.os.Handler.handleCallback(Handler.java:587)  
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.os.Handler.dispatchMessage(Handler.java:92)

Edit: Line no: 88 is s3.setAdapter(adapter3);

Parth Doshi
  • 4,200
  • 15
  • 79
  • 129

1 Answers1

1

NullPointerException occurs when one of the object is null and you are trying to use it.

From your code i found that you have not initialized s3 of Spinner.

You just forgot to add :

s3 = (Spinner) findViewById(R.id.spinner3);
Kartik Domadiya
  • 29,868
  • 19
  • 93
  • 104