-1

Activity에서 AppCompatActivity로 클래스를 변경했습니다.Activity를 AppCompatActivity로 변경하면 NullPointerException이 발생합니다.

그리고 MenuItemCompat.getActionView(item)

item.getActionView() 변화는 이제 다음 코드 NPE를 얻을.

public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.messages, menu); 

    MenuItem item = menu.findItem(R.id.menuTxtSize); 
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); 
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
    int index = sp.getInt(getString(R.string.pr_text_size), 
      Integer.parseInt(getString(R.string.pr_default_text_size))); 
    spinner.setSelection(index); 


E/ACRA: ACRA caught a NullPointerException for com.alex.documentation java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setSelection(int)' on a null object reference at com.alex.message.activities.MessagesActivity 

오류를 해결하는 방법?

+3

NPE가 발생할 스택 추적과 실제 줄을 포함하십시오. – Kiskae

+0

@Kiskae 질문에 스택 추적을 추가했습니다. –

+0

@Rotwang 중복으로 표시되어있는 것을 제거하십시오. 누군가가 NPE가 무엇인지 묻는 간단한 질문을 참조했습니다. 이것은 일반적인 NPE 질문이 아닙니다. –

답변

4

AppCompatActivity을 사용하는 경우 android:actionViewClass이 아닌 app:actionViewClass을 사용해야합니다.

+0

네가 맞습니다. 'app : ****'와'android : ******'의 차이점은 무엇입니까? –

+2

'android :'는 시스템으로 제공되는 반면,'app :'은 앱과 앱에 포함되어 있습니다. [for android :'vs'app :'네임 스페이스]에 대한 전체 설명 (http://stackoverflow.com/questions/26692233/what-is-the-app-android-xml-namespace/26692768#26692768)을 참조하십시오. 자세한 내용은. – ianhanniballake

+0

고맙습니다. 두 프로젝트를 병합 할 때 문제가 발생했습니다 (두 팀원이 서로 다른 리포지토리에서 동일한 앱을 시작했습니다). 하나는 활동이고 다른 하나는 검색 작업 표시 줄이있는 AppCompatActivity입니다. –