onSaveInstanceState wird in Fragment nicht aufgerufen

Ich weiß, dass die Leute diese Frage gestellt haben, aber ich bin allen Antworten gefolgt und habe immer noch das gleiche Problem. Ich habe zwei Skripte. Eines ist der Fragment-Manager (IngredientsActivity) und das andere ist das Fragment (OtherList). Der Code lautet wie folgt

InhaltsstoffeAktivität

import java.util.ArrayList;

import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;



public class IngredientsActivity extends FragmentActivity implements ActionBar.TabListener {

    private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.check_list);

        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // For each of the sections in the app, add a tab to the action bar.
        actionBar.addTab(actionBar.newTab().setText("Alcahol").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Juice").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Other").setTabListener(this));
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {

        if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
            getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);          //OVERRIDE SAVE ON MAINCLASS

        outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar().getSelectedNavigationIndex());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        return true;
    }



    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {


        if (tab.getPosition() == 0) {
            AlcoholList simpleListFragment = new AlcoholList();
            getSupportFragmentManager().beginTransaction().replace(R.id.containert, simpleListFragment).commit();
        } 
        else if (tab.getPosition() == 1) {
            JuiceList androidlidt = new JuiceList();
            getSupportFragmentManager().beginTransaction().replace(R.id.containert, androidlidt).commit();
        }



        else {

            OtherList androidversionlist = new OtherList();
            getSupportFragmentManager().beginTransaction().replace(R.id.containert, androidversionlist).commit();

        }
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

       public static class DummySectionFragment extends Fragment {
        public DummySectionFragment() {
        }

        public static final String ARG_SECTION_NUMBER = "section_number";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            TextView textView = new TextView(getActivity());
            textView.setGravity(Gravity.CENTER);
            Bundle args = getArguments();
            textView.setText(Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
            return textView;
        }
    }



}

OtherList

import java.util.ArrayList;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ListView;


public class OtherList  extends ListFragment{
    MyCustomAdapter dataAdapter = null;
    private  ArrayList<String> recipesList;
private ArrayList<Items> stateList ;

public OtherList() {

    setRetainInstance(true);
     stateList = new ArrayList<Items>();

          Items _states1 = new Items ("Gin",false);
          stateList.add(_states1);
Items _states2 = new Items ("Ginger Liqueur",false);
          stateList.add(_states2);
Items _states3 = new Items ("Citrus Vodka",false);
          stateList.add(_states3);
Items _states4 = new Items ("Champagne",false);
          stateList.add(_states4);
Items _states5 = new Items ("Coconut Rum",false);
          stateList.add(_states5);
Items _states6 = new Items ("Pear Vodka",false);
          stateList.add(_states6);
Items _states7 = new Items ("Rum",false);
          stateList.add(_states7);
Items _states8 = new Items ("Tequila",false);
          stateList.add(_states8);
Items _states9 = new Items ("Triple Sec",false);
          stateList.add(_states9);
Items _states10 = new Items ("Kahlua",false);
          stateList.add(_states10);

        }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


          dataAdapter = new MyCustomAdapter(this.getActivity(),R.layout.da_item, stateList);
          setListAdapter(dataAdapter);    

    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        return inflater.inflate(R.layout.list_fragment, container, false);
    }

    @Override
    public void onListItemClick(ListView list, View v, int position, long id) {


    }

    private class MyCustomAdapter extends ArrayAdapter<Items>
{

 private ArrayList<Items> stateList;

public MyCustomAdapter(Context context, int textViewResourceId, 

ArrayList<Items> stateList) 
{
      super(context, textViewResourceId, stateList);
      this.stateList = new ArrayList<Items>();
      this.stateList.addAll(stateList);
}

  private class ViewHolder
  {

    CheckBox name;
  }

  @Override
 public View getView(int position, View convertView, ViewGroup parent) 
  {

          ViewHolder holder = null;

          Log.v("ConvertView", String.valueOf(position));

          if (convertView == null)
          {

             LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

             convertView = vi.inflate(R.layout.da_item, null);

            holder = new ViewHolder();

            holder.name = (CheckBox) convertView.findViewById(R.id.ingredientbox);

            convertView.setTag(holder);

                      holder.name.setOnClickListener( new View.OnClickListener() 
                      {
                                 public void onClick(View v)  
                                 ,{
                                   CheckBox cb = (CheckBox) v;
                                   Items _state = (Items) cb.getTag();
                                   _state.setSelected(cb.isChecked());
                                }
                      });

          }
          else
          {
              holder = (ViewHolder) convertView.getTag();
          }

          Items state = stateList.get(position);


          holder.name.setText(state.getName());
          holder.name.setChecked(state.isSelected());

          holder.name.setTag(state);

          return convertView;
  }

}

@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);



}

     @Override 
     public void onSaveInstanceState(Bundle outState) {
          Log.d("hey","SAVING");                              //NOT SAVING
         super.onSaveInstanceState(outState);
         save();

         outState.putStringArrayList("index", recipesList); 

         }

                }
            }


    }

    }

Ich habe mehrere Vorschläge gefunden, die besagten, dass der onSaveInstanceState überschrieben werden soll, was ich auch getan habe, und ich fand noch mehr, dass ich setRetainInstance verwenden soll. Ich weiß nicht, warum der Status setRetainInstance hilfreich ist, wenn ich einen Listenwert speichern möchte.Meine Frage: Warum wird das Speichern nicht in der OtherList-Klasse aufgerufen oder was ist eine bessere Methode zum Implementieren, wenn ich die Werte in der Listenansicht speichern möchte? (in diesem Fall benutze ich Checkboxen)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage