有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Android屏幕旋转时以片段形式保存数据

有人能帮我解决问题吗

我有一个活动和六个片段

一个片段包含到我的MediaPlayer类的链接,我用它来显示片段中的一些视频
我在活动的onCreate()方法中获得每个片段类的链接
每次屏幕旋转时,都会调用onCreate()方法,我会得到指向我的六个片段类(以及新的MediaPlayer)的新链接

我可以在旋转之前保存到片段类的每个链接,然后再将其取回吗
(例如:我正在使用link to media player类保存指向片段的链接,然后调用我的media player的stop()方法,然后当屏幕旋转时,我恢复所有数据,以及我的media player并调用ResumePlay()方法)

或者这是一个坏主意,我每次都需要重新创建链接,而我唯一需要做的就是将视频的当前时间和文件路径保存在onSaveInstanceState中,然后将其恢复到onRestoreInstanceState,用恢复的时间启动新的MediaPlyer

谢谢大家!


共 (2) 个答案

  1. # 1 楼答案

    在清单文件中使用android:configChanges=“orientation | screenSize”

    您的清单文件如下所示

        <activity
            android:name="_________"
            android:configChanges="orientation|screenSize"/>
    
  2. # 2 楼答案

    对于应用程序内的每个类扩展片段,在onSaveInstanceState方法内更改屏幕方向时,存储要保留的值,然后在onCreateView方法内保留该值

    例如,对于您遇到的视频问题,您可以执行以下操作:

    @Override
    public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("cp", videoview.getCurrentPosition());  
     }
    

    然后像这样保留它

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if(savedInstanceState!=null)
        {
            int a=savedInstanceState.getInt("cp");
            videoview.seekTo(a);
        }
    
    //the rest of your code then....
    }
    

    希望我抓到你了