运维开发网

Java 在Android中的屏幕旋转中保存片段中的数据

运维开发网 https://www.qedev.com 2020-04-09 18:14 出处:网络 作者:运维开发网整理
任何人都可以帮我解决我的问题吗? 我有一个活动和六个片段. 一个片段包含指向我的MediaPlayer类的链接,我用它来显示片段中的一些视频. 我在Activity的onCreate()方法中获取了每个Fragment类的链接. 每次屏幕旋转时,都会调用onCreate()方法,并获得指向我的六个Fragment类(和新的MediaPlayer)的新链接. 我可以在轮换之前保存每个链接到我的Fra
任何人都可以帮我解决我的问题吗?

我有一个活动和六个片段.

一个片段包含指向我的MediaPlayer类的链接,我用它来显示片段中的一些视频.

我在Activity的onCreate()方法中获取了每个Fragment类的链接.

每次屏幕旋转时,都会调用onCreate()方法,并获得指向我的六个Fragment类(和新的MediaPlayer)的新链接.

我可以在轮换之前保存每个链接到我的Fragment类,然后将其恢复吗?

(例如:我通过链接到媒体播放器类保存链接到我的片段,然后调用我的MediaPlayer的stop()方法,然后当屏幕旋转时,我恢复所有数据,我的MediaPlayer并调用ResumePlay()方法) .

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

谢谢!

对于每个类在应用程序商店中扩展片段,当您在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....
}

希望我能得到你.

0

精彩评论

暂无评论...
验证码 换一张
取 消