1

I have this problem with a spinner and + i'm new on android so idk what to do i've been searchin for days and didn't found anything yet plz help D:

asignatura = (Spinner) findViewById(R.id.spinnerAsignaturas);
    modificar = 0;
    // fin inflates
    Cursor cursor = getContentResolver().query(
            BDProvider.ASIGNATURAS_CONTENT_URI,
            new String[] { BDProvider.ID, BDProvider.ASIGNATURA_NOMBRE },
            null, null, BDProvider.ID);
    SimpleCursorAdapter adaptador = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, cursor,
            new String[] { BDProvider.ASIGNATURA_NOMBRE },
            new int[] { android.R.id.text1 });

    adaptador
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    asignatura.setAdapter(adaptador);
    asignatura.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            idAsignatura = (String) ((TextView) arg1).getText();
            setIdAsignatura(idAsignatura);
        }

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

    });

the log:

  01-06 14:25:54.790: E/AndroidRuntime(5170): java.lang.NullPointerException
01-06 14:25:54.790: E/AndroidRuntime(5170):     at es.uvigo.esei.dm.p06.InsertarTarea$2.onItemSelected(InsertarTarea.java:85)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:893)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.AdapterView.selectionChanged(AdapterView.java:880)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.AdapterView.checkSelectionChanged(AdapterView.java:1043)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.AdapterView.handleDataChanged(AdapterView.java:1023)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:180)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.Spinner.onMeasure(Spinner.java:482)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.View.measure(View.java:16458)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.View.measure(View.java:16458)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.forceUniformWidth(LinearLayout.java:940)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:920)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.View.measure(View.java:16458)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.View.measure(View.java:16458)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-06 14:25:54.790: E/AndroidRuntime(5170):     at android.view.View.measure(View.java:16458)

It says that the view on the onItemSelected is null but i don't know why, i think the cursor is taking the data before setting the adapter....

Yago Rodriguez
  • 354
  • 1
  • 10

2 Answers2

0

I am assuming that your TextView is empty and getText() returns null. Instead of casting directly to String, try something like:

CharSequence cidAsignatura = ((TextView) arg1).getText();
if (cidAsignatura != null) {
  setIdAsignatura(cidAsignatura.toString());
}
Rares Barbantan
  • 761
  • 4
  • 9
  • No, that's not the problem, the problem is that "arg1" is null when you rotate the screen D: still having the problem... :( – Yago Rodriguez Jan 06 '15 at 17:02
0

OK i just found a simple but not sure that is a valid way to make it work, but if you

@Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        idAsignatura = (String) ((TextView) arg1).getText();
        setIdAsignatura(idAsignatura);
    }

take the "arg1" and you do this:

@Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

            if(arg1!=null){
                setIdAsignatura((String) ((TextView) arg1).getText());
            }
        }

it won't crash! thanks Rares Barbatan.

Yago Rodriguez
  • 354
  • 1
  • 10
  • This prevents the crash, but it doesn't solve the problem. I have a similar question. Here is my related question: http://stackoverflow.com/questions/33747884/android-nullpointerexception-spinner-onitemselected-view-parameter-is-null-a – Rock Lee Nov 17 '15 at 05:22