I am creating a sliding tabs activity that has three fragments using ActionBarSherlock. Each fragment has a custom view or multiple custom views added at runtime and I want to be able to save the state of the fragment. I have progress bars that I am using just as meters and when I rotate the device, they go back to 0 and when I go to the final fragment, it does the same thing. I have looked for a while at different ways to this including setRetainInstance(true) and android:configChanges, but so far none of it has worked. Please can anyone help me with this.
Here is the code for fragment 1:
public class Fragment_1 extends SherlockFragment
{
private View view;
private PVLayout pvLayout; // Process value container view configuration class instance
private SlidingTabsActivity slidingTabsActivity;
private DeviceInfo deviceInfo;
private Page page;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.fragment_pv, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
/* Creates the new views from the configuration class */
slidingTabsActivity = (SlidingTabsActivity) getSherlockActivity();
deviceInfo = slidingTabsActivity.getDeviceInfo();
page = slidingTabsActivity.getPage1();
pvLayout = new PVLayout(slidingTabsActivity);
pvLayout.setDeviceInfo(deviceInfo);
pvLayout.setPage(page);
pvLayout.createView();
}
}
And fragment 2:
public class Fragment_2 extends SherlockFragment
{
private View view;
private ConfigLayout configLayout;
private SlidingTabsActivity slidingTabsActivity;
private DeviceInfo deviceInfo;
private Page page;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.fragment_config, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
/* Creates the new view from the configuration class */
slidingTabsActivity = (SlidingTabsActivity) getSherlockActivity();
deviceInfo = slidingTabsActivity.getDeviceInfo();
page = slidingTabsActivity.getPage2();
configLayout = new ConfigLayout(slidingTabsActivity);
configLayout.setDeviceInfo(deviceInfo);
configLayout.setPage(page);
configLayout.createView();
}
}
And fragment 3:
public class Fragment_3 extends SherlockFragment
{
private View view;
private DiagLayout diagLayout;
private SlidingTabsActivity slidingTabsActivity;
private DeviceInfo deviceInfo;
private Page page;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.fragment_diag, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
/* Creates the new view from the configuration class */
slidingTabsActivity = (SlidingTabsActivity) getSherlockActivity();
deviceInfo = slidingTabsActivity.getDeviceInfo();
page = slidingTabsActivity.getPage3();
diagLayout = new DiagLayout(slidingTabsActivity);
diagLayout.setDeviceInfo(deviceInfo);
diagLayout.setPage(page);
diagLayout.createView();
}
}