clazzy
clazzy

Reputation: 55

spinner setSelection() from another method results in null pointer exception

Class Construction

protected Spinner tipSpinner;
private ArrayAdapter<CharSequence> adapterTip;

Within onCreate after setContentView(R.layout.main);

Spinner spinner= (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapterTip = ArrayAdapter.createFromResource(this, R.array.tipArray, android.R.layout.simple_spinner_item);   
    adapterTip.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapterTip);
    spinner.setSelection(14, true);
    spinner.setOnItemSelectedListener(new tipSelectorListener());

Spinner Listener

public class tipSelectorListener implements OnItemSelectedListener{

    public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) {
            Toast.makeText(parent.getContext(), "TEST " +
                      parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent){
        //Do Nothing
    }

}

EditText Input - On key change call calculate, change value of spinner

billAmount = (EditText)findViewById(R.id.textLblBillAmount);
EditText billAmount = (EditText) findViewById(R.id.textLblBillAmount);

 billAmount.setOnKeyListener(new EditText.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press

            recalculate();
            //Spinner tipSpinner.setSelection(0, true);

            Toast toast = Toast.makeText(getBaseContext(), "TEST", Toast.LENGTH_SHORT);
            toast.show();

          return true;
        }
        return false;
    }
});

Calculate method

public void recalculate(){
    // Recalculate Values of all
    tipSpinner.setSelection(0, true);

}

Error Null Pointer when EditText Changed, think this has c

Upvotes: 1

Views: 1144

Answers (1)

Alexei
Alexei

Reputation: 1068

You didn't initialized your tipSpinner variable.

Change this code:

Spinner spinner= (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapterTip = ArrayAdapter.createFromResource(this,
      R.array.tipArray, android.R.layout.simple_spinner_item);   
adapterTip.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterTip);
spinner.setSelection(14, true);
spinner.setOnItemSelectedListener(new tipSelectorListener());

To this one:

tipSpinner= (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapterTip = ArrayAdapter.createFromResource(this,
      R.array.tipArray, android.R.layout.simple_spinner_item);   
adapterTip.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
tipSpinner.setAdapter(adapterTip);
tipSpinner.setSelection(14, true);
tipSpinner.setOnItemSelectedListener(new tipSelectorListener());

Upvotes: 3

Related Questions