Java 当我改变页面方向时,它出现在页面的开头

Java 当我改变页面方向时,它出现在页面的开头,java,android,sharedpreferences,pdf-reader,Java,Android,Sharedpreferences,Pdf Reader,我正在使用。我正在使用这个代码 package com.epubtest.hxfy.epubtest; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Canvas; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.u

我正在使用。我正在使用这个代码

package com.epubtest.hxfy.epubtest;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;    
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnDrawListener;
import com.github.barteksc.pdfviewer.listener.OnErrorListener;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.listener.OnPageScrollListener;    

public class PDFReaderActivity2 extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener, OnDrawListener, OnErrorListener, OnPageScrollListener {

    private PDFView pdfview;
    private SharedPreferences pdfReader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pdfreader2);    
        pdfReader = this.getSharedPreferences("PDFReader", Context.MODE_PRIVATE);

        pdfview = (PDFView) findViewById(R.id.pdfView);
        pdfview.fromAsset("test4.pdf")
                .defaultPage(pdfReader.getInt("pages",0))
                .onPageChange(this)
                .swipeHorizontal(false)
                .enableAnnotationRendering(true)
                .scrollHandle(null)
                .onLoad(this)
                .onDraw(this)
                .enableSwipe(true)
                .onError(this)
                .enableDoubletap(true)
                .onPageScroll(this)
                .load();
    }

    @Override
    public void onPageChanged(int page, int pageCount) {
        SharedPreferences.Editor edit = pdfReader.edit();
        edit.putInt("pages",page);
        edit.commit();
    }

    @Override
    public void loadComplete(int nbPages) {

    }    

    @Override
    public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {

    }

    @Override
    public void onError(Throwable t) {

    }

    @Override
    public void onPageScrolled(int page, float positionOffset) {
    }
}
更改页面方向的步骤。但如果我必须假设,当我们开始横向时,纵向模式和第15页是否会改变页面的页面方向


SharedReferences
不起作用。它无法记录我们上一页的位置。请在这方面帮助我,请在这方面帮助我。

不要为此使用SharePreferences。当您更改屏幕方向时,系统再次调用
onCreate()
方法,并重新绘制视图。要解决这个问题,有两种方法。第一个是强制在清单文件中保存状态

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>

@JavedKhan首先感谢您的回复,
android:configChanges=“orientation | screenSize”
工作正常,但无法
pdfView.fitToWidth()如果可能,请将此方法放在上面的代码中,这对我来说很容易实现。此库已实现此方法。不管怎样,我会把这个加到我的答案中@亲爱的,我已经使用了这个方法
pdfView.fitToWidth()
适合宽度,但当我使用
android:configChanges=“orientation | screenSize”
时,它无法实现
pdfView.fitToWidth()@JavedKhan
    Configurator.onRender(new OnRenderListener() {
    @Override
    public void onInitiallyRendered(int pages, float pageWidth, float pageHeight) {
        pdfView.fitToWidth(); // optionally pass page number
    }
});