我在理解Android如何工作方面遇到了问题。你能帮助我吗? 我已经通过XML将我的片段连接到一个活动。
<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
@Override
public void onResume (){
super.onResume();
mainActivity = (MainActivity)getActivity();
mainActivity.setFragment(this);
}
//Activity
public void setFragment(mediaPlayerControlBar f){
frag = f;
Log.d("FRAG", "SET");
}
一切正常。但是当我旋转屏幕时,会出现一个新的“未触摸”片段,但是frag.getView()为null。 getFragments()列表为null。 findFragmentById()也是null。那么,我该如何访问这个新片段?
如果您需要更多代码,请告诉我,我会尽快更新此帖子。
答案 0 :(得分:1)
您需要保存Fragment实例状态,因为当方向更改时,将重新创建活动和片段。
在片段中,您需要通过覆盖onActivityCreated()
来保存实例状态,并在onSaveInstanceState()
在活动中,您必须在onCreate()
中保存片段的状态,并在{{1}}中恢复