为什么在onPause或onStop中调用findViewById(android.R.id.content).getRootView()
会返回NPE,但是当我在onCreate中调用它时却没有?
答案 0 :(得分: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;
}
它至少会返回视图本身。
我尝试在 onStop , onPause , onCreate ,中记录findViewById(android.R.id.content)
和findViewById(android.R.id.content).getRootView()
后onResume ,它工作得很好。没有NPE。
你能把你的活动代码?
答案 1 :(得分:0)
我无法在Android 4.2.2上重现此错误。您可能从其他地方获得 NullPointerException 。
顺便说一下,findViewById(android.R.id.content)
会返回 rootview ,因此getRootView()
通常无效。