0

У меня есть только один фрагмент, прикрепленный к действию с использованием replace. Когда устройство блокирует экран через несколько секунд, а затем я его разблокирую, метод onItemSelected, назначенный на какой-либо счетчик, выполняется, хотя просмотры фрагментов (EditTexts и т. Д.) И выбранный элемент spinner остаются неизменными.Как остановить onItemSelected от выполнения выполнения при возврате из заблокированного экрана

public class MyFragment extends Fragment { 

    private Spinner mySpinner; 

    public static MyFragment newInstance() { 
     return new MyFragment(); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.some_layout, container, false); 

     mySpinner = (Spinner)view.findViewById(R.id.my_spinner); 

     List<String> items = new ArrayList<>(); 
     items.add("Anything"); 
     items.add("Anything"); 
     items.add("Anything"); 

     ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(
         getContext(), 
         android.R.layout.simple_spinner_item, 
         items); 

     mySpinner.setAdapter(adapter); 

     mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getContext(), "Hello World", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

     return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
    } 

} 

Каждый раз, когда я выбираю пункт я получаю тост сообщение «Hello World» (или любой другой способ или действия, назначенный для слушателя), но когда замки устройства, а затем разблокировать, я все еще получаю сообщение, как будто был вызван метод onItemSelected.

Я пытаюсь запутаться с булерами и методами OnSaveInstanceState и OnActivityCreated, но я не понял способ остановить onItemSelected метод от выполнения, когда устройство вернется с заблокированного экрана.

+0

Должны ли вы? Маловероятно, что вы захотите, чтобы спиннер в конечном итоге просто выпустил тост. Вероятно, вы, вероятно, определите некоторое значение, которое затем будет использовано. например вы можете сделать что-то вроде 'myspinnerselecteditem = my.Spnner.getSecltedItem()', и в этом случае было бы важно, чтобы он был установлен несколько раз? – MikeT

+0

Да, счетчик выполняет разные действия в зависимости от выбранного элемента, но это не имеет значения, потому что моя проблема в том, что onItemSelected выполняет при возврате с заблокированного экрана. – FerDensetsu

ответ

0

Проблема заключается в том, что onItemSelected вызывается после Spinner инициализируется, решение поставить mySpinner.setSelection(position, false) перед тем mySpinner.setOnItemSelectedListener относятся к this