我对 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 会重新创建。
在 fragment 中,您需要通过覆盖
中恢复它onSaveInstanceState()
来保存实例状态,并在onActivityCreated()
在 Activity 中,您必须在
中恢复它onSaveInstanceState()
中保存 fragment 的状态,并在onCreate()
关于java - 方向改变后 fragment 变成幽灵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481654/