How to save state of views in Fragment using ActionBarSherlock in Android

103 Views Asked by At

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(); 
}   
}
0

There are 0 best solutions below