- fragment在onCreate中设置setRetainInstance(true);
- 如果涉及到保存数据,在onSaveInstanceState保存数据
- 在onCreateView获取bundle
MyFragment
在onCreateView,onCreate,onActivityCreate均可获得bundle
注意: Fragment没有onRestoreInstance方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, fals
mTextView = (TextView) view.findViewById(R.id.tv);
//!!!!!!获取时间
if (savedInstanceState == null) {
time = System.currentTimeMillis() + "";
} else {
time = savedInstanceState.getString("time");
}
mTextView.setText(time);
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//!!!!!!!保存Instance
setRetainInstance(true);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//!!!!!!!时间保存
outState.putString("time", time);
}
MainActivity
通过tag找到对应的fragment
public class MainActivity extends AppCompatActivity {
private MyFragment myFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
myFragment = (MyFragment) fragmentManager.findFragmentByTag("myFragment");
if (myFragment == null) {
myFragment = new MyFragment();
fragmentManager.beginTransaction().replace(R.id.fragment_fl, myFragment, "myFragment").commit();
}
}
}
layout.activity_main
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.zhang.fragmentsave.MainActivity">
<FrameLayout
android:id="@+id/fragment_fl"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
网友评论