У меня есть только один фрагмент, прикрепленный к действию с использованием 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 метод от выполнения, когда устройство вернется с заблокированного экрана.
Должны ли вы? Маловероятно, что вы захотите, чтобы спиннер в конечном итоге просто выпустил тост. Вероятно, вы, вероятно, определите некоторое значение, которое затем будет использовано. например вы можете сделать что-то вроде 'myspinnerselecteditem = my.Spnner.getSecltedItem()', и в этом случае было бы важно, чтобы он был установлен несколько раз? – MikeT
Да, счетчик выполняет разные действия в зависимости от выбранного элемента, но это не имеет значения, потому что моя проблема в том, что onItemSelected выполняет при возврате с заблокированного экрана. – FerDensetsu