findViewById(android.R.id.content).getRootView()nullPointerException

时间:2013-04-26 20:34:02

标签: android android-activity android-lifecycle rootview

为什么在onPause或onStop中调用findViewById(android.R.id.content).getRootView()会返回NPE,但是当我在onCreate中调用它时却没有?

2 个答案:

答案 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()通常无效。