2013-04-26 3 views
3

Почему вызов findViewById(android.R.id.content).getRootView() в onPause или onStop возвращает NPE, но не когда я вызываю его в onCreate?findViewById (android.R.id.content) .getRootView() nullPointerException

+1

Мое лучшее угадывание onPause и onStop вы не привязаны к окну, которое держит вас. –

+0

Попробуйте следующие две ссылки: http://stackoverflow.com/questions/4486034/get-root-view-from-current-activity http://stackoverflow.com/questions/7776768/android-what-is-android-r -id-контента используется для- –

ответ

1

Вот код android.view.View.getRootView():

public View getRootView() { 
     if (mAttachInfo != null) { 
      final View v = mAttachInfo.mRootView; 
      if (v != null) { 
       return v; 
      } 
     } 

     View parent = this; 

     while (parent.mParent != null && parent.mParent instanceof View) { 
      parent = (View) parent.mParent; 
     } 

     return parent; 
    } 

это по крайней мере возвращать сам вид.

После того как я попробовал войти findViewById(android.R.id.content) и findViewById(android.R.id.content).getRootView() в OnStop, OnPause, OnCreate, onResume, он работал все в порядке. Нет NPE.

Вы можете задать свой код операции?

0

Я не смог воспроизвести эту ошибку на Android 4.2.2. Возможно, вы получите это NullPointerException от чего-то другого. Кстати, findViewById(android.R.id.content) возвращает rootview так getRootView() обычно недействителен.

Смежные вопросы