java - 方向改变后 fragment 变成幽灵

标签 java android android-fragments

我对 Android 的工作原理有疑问。你能帮助我吗? 我已通过 XML 将 fragment 连接到 Activity 。

<fragment android:name="com.unimusic.mediaPlayerControlBar"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:id="@+id/mediaPlayerControlBar"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        />

在 fragment 类中,我得到 mainActivity 类并给它一个像这样的 fragment 实例:

//Fragment
@Override
    public void onResume (){
        super.onResume();
        mainActivity = (MainActivity)getActivity();
        mainActivity.setFragment(this);
    }
//Activity
public void setFragment(mediaPlayerControlBar f){
        frag = f;
        Log.d("FRAG", "SET");
    }

一切正常。但是当我旋转屏幕时,会出现一个新的“未触及” fragment ,但它 frag.getView() 为空。 getFragments() 列表为空。 findFragmentById() 也为空。那么,我怎样才能访问这个新 fragment 呢?

如果您需要更多代码,请告诉我,我会尽快更新这篇文章。

最佳答案

您需要保存 fragment 实例状态,因为当方向改变时, Activity 和 fragment 会重新创建。

  1. 在 fragment 中,您需要通过覆盖 onSaveInstanceState() 来保存实例状态,并在 onActivityCreated()

    中恢复它
  2. 在 Activity 中,您必须在 onSaveInstanceState() 中保存 fragment 的状态,并在 onCreate()

    中恢复它

关于java - 方向改变后 fragment 变成幽灵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481654/

相关文章:

java - 为什么我的二进制数据从网络服务器获取后会变大?

java - 同步取决于静态字段?

android - 外部库与 libs 文件夹

android - Kotlin Android 打印到控制台

java - Android 中的 Activity 到 Fragment 通信

android - 从 Fragment 实现接口(interface)初始化接口(interface)

java - 使用递归求平方根(牛顿算法)

java代码和unix守护进程

android - 如何获取用户的电话名称(不是电子邮件)

android - 导航组件无法弹出以退出应用程序