2015-01-06 3 views
1

회 전자에이 문제가 있습니다. + 안드로이드에 대한 새로운 기능입니다. idk해야 할 일 검색을 며칠 동안했는데 아직 아무것도 찾지 못했습니다. 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) {} 

    }); 

로그는 :

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) 

그것은 onItemSelected에보기가 null하지만 난 커서가 어댑터를 설정하기 전에 데이터를 가지고 있다고 생각하는 이유, 내가 모르는 것을 말한다 ....

+0

커서의 값은 무엇입니까? 그것도 null입니까? –

답변

0

확인 난 그냥 발견을 단순하지만 그게 작동하게하는 유효한 방법이지만, 확실히 당신은

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

걸릴 경우 " arg1 "이라고 입력하면 다음과 같이 처리됩니다.

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

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

크래시가 발생하지 않습니다! Rares Barbatan에게 감사드립니다.

+0

이것은 충돌을 막아 주지만 문제가 해결되지 않습니다. 비슷한 질문입니다. 여기에 내 관련된 질문 : http://stackoverflow.com/questions/33747884/android-nullpointerexception-spinner-onitemselected-view-parameter-is-null-a –

0

귀하의 TextView는 비어 있으며 getText()는 null을 반환합니다. 대신 문자열로 직접 캐스팅에, 같은 시도 :

CharSequence cidAsignatura = ((TextView) arg1).getText(); 
if (cidAsignatura != null) { 
    setIdAsignatura(cidAsignatura.toString()); 
} 
+0

아뇨, 그게 문제가 아니에요, 문제는 "arg1"이 화면을 돌릴 때 null이라는 것입니다. D : 여전히 문제가 있습니다 ... :( –

관련 문제