Моя активность входит дважды в onCreateView() и сбрасывает мои сохраненные переменные

У меня были некоторые проблемы с активностью из моего приложения. Я сохранял некоторые данные с onSavedInstanceState() и восстановление в onCreateView() метод (это действие имеет два фрагмента и имеет onCreate onCreateView). Восстановленные данные были исправлены, но я не мог правильно поместить их в счетчик из моей деятельности.

Я поставил несколько точек останова до, внутри и после этого цикла:

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, list);
      spinner.setAdapter(adapter);

      **if(savedInstanceState != null) {
          Log.i("SPINNER POS", ""+posSaved);
          spinner.setSelection(posSaved);
      }**

и я мог заметить, что приложение дважды обращается к методу onCreateView... в первый раз переменная posSaved верна, но во второй раз эта переменная равна 0, и по этой причине счетчик никогда не показывает положение, сохраненное в переменной posSaved, всегда он показывает позицию 0 (как по умолчанию), а затем, как я не использую метод onSavedInstanceState...

... почему приложение вводить дважды в методе onCreateView()? Как я могу решить эту ситуацию?

Оплаченный Это действие также входит дважды в метод onCreate().

КОД моей активности

public class Menu_Seeker_Filter extends Fragment {
... (variables declarated) ...
 @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);         
      if ((getFragmentManager().findFragmentById(R.id.results_fragment) != null)) { //Fragments
            mTwoPane = true;
      }

 @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.activity_seeker_filtro, container, false);
      if (savedInstanceState != null) {
          // Restore value of members from saved state
          posSaved = savedInstanceState.getInt("POSITION");
      }
      ...
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, list);
      spinner.setAdapter(adapter);
      spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
          public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
              ((TextView) parent.getChildAt(0)).setTextSize(18);
              ((TextView) parent.getChildAt(0)).setTypeface(font2);
              text = (parent.getItemAtPosition(pos).toString());
              posSaved = pos;
          }
          public void onNothingSelected(AdapterView<?> parent) {
              //Do nothing.
          }       
      });
      if(savedInstanceState != null) {
          Log.i("POSITION", ""+posSaved);
          spinner.setSelection(posSaved);
      }
  }

 @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        // Save the user's current game state
        savedInstanceState.putInt("POSITION", spinner.getSelectedItemPosition());

        // Always call the superclass so it can save the view hierarchy state
        super.onSaveInstanceState(savedInstanceState);
    }


}

и этот Activity-фрагмент называется в этом классе:

public class Menu_Seeker extends FragmentActivity {
...(variables declarated)...
final Menu_Seeker_Filter fragment = new Menu_Seeker_Filter();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_seeker_filter);

        if ((getSupportFragmentManager().findFragmentById(R.id.results_fragment) != null)) { //Fragments
           mTwoPane = true;
           getSupportFragmentManager().beginTransaction().replace(R.id.seeker_fragment, fragment).commit();         
        }else { //No Fragments
           getSupportFragmentManager().beginTransaction().replace(R.id.framelayout_filter, fragment).commit();
        }

    ...
}

Благодарю.

0 ответов

Другие вопросы по тегам