Java ScrollView savedInstanceState始终@NotNull参数

Java ScrollView savedInstanceState始终@NotNull参数,java,android,Java,Android,一天来,我一直试图理解这一点,但一定是做错了什么。我想能够恢复在方向改变时和视频活动(信息)后返回时在ScrollView中的位置 这是我的完整代码,没有任何失败的代码尝试 ScrollView android:id=“@+id/mScrollView” 我还尝试了我的其他变体,将其用于绘制图片。我在这里的想法是,您试图在通过布局定位滚动视图之前设置滚动位置,因此它的大小为0,将滚动设置为任何值都没有任何效果。尝试在OnPreDrawListener private static final S

一天来,我一直试图理解这一点,但一定是做错了什么。我想能够恢复在方向改变时和视频活动(信息)后返回时在ScrollView中的位置

这是我的完整代码,没有任何失败的代码尝试

ScrollView android:id=“@+id/mScrollView


我还尝试了我的其他变体,将其用于绘制图片。

我在这里的想法是,您试图在通过布局定位
滚动视图之前设置滚动位置,因此它的大小为0,将滚动设置为任何值都没有任何效果。尝试在
OnPreDrawListener

private static final String ARTICLE_SCROLL_POSITION = "ARTICLE_SCROLL_POSITION";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //... your stuff here

    if (savedInstanceState != null) {
        mScrollView.getViewTreeObserver().setOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                mScrollView.getViewTreeObserver().removeOnPreDrawListener(this);
                mScrollView.setScrollY(savedInstanceState.getInt(ARTICLE_SCROLL_POSITION));
            }
        });
    }
}


@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    //I don't think scroll x is ever being non-zero here
    outState.putInt(ARTICLE_SCROLL_POSITION, mScrollView.getScrollY());
}

意外javascript标记?
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putIntArray("ARTICLE_SCROLL_POSITION",
            new int[]{ mScrollView.getScrollX(), mScrollView.getScrollY()});
}

protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    final int[] position = savedInstanceState.getIntArray("ARTICLE_SCROLL_POSITION");
    if(position != null)
        mScrollView.post(new Runnable() {
            public void run() {
                mScrollView.scrollTo(position[0], position[1]);
            }
        });
}
private static final String ARTICLE_SCROLL_POSITION = "ARTICLE_SCROLL_POSITION";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //... your stuff here

    if (savedInstanceState != null) {
        mScrollView.getViewTreeObserver().setOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                mScrollView.getViewTreeObserver().removeOnPreDrawListener(this);
                mScrollView.setScrollY(savedInstanceState.getInt(ARTICLE_SCROLL_POSITION));
            }
        });
    }
}


@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    //I don't think scroll x is ever being non-zero here
    outState.putInt(ARTICLE_SCROLL_POSITION, mScrollView.getScrollY());
}