replace를 사용하여 하나의 프래그먼트 만 활동에 첨부했습니다. 장치가 몇 초 후에 화면을 잠그고 잠금을 해제하면 조각보기 (EditTexts 등) 및 선택한 회 전자 항목이 동일하게 유지 되더라도 일부 회 전자에 지정된 onItemSelected 메서드가 실행됩니다.잠긴 화면에서 돌아올 때 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 메소드가 호출 된 것처럼 메시지.
나는 boolean과 Fragment의 onSaveInstanceState 및 onActivityCreated 메소드를 사용하고 있지만, 잠긴 화면에서 디바이스가 반환 될 때 onItemSelected 메소드가 실행되는 것을 막을 수있는 방법을 찾지 못했습니다.
을 참조
mySpinner.setSelection(position, false)
전에 넣어하는 것입니다,Spinner
가 초기화 된 후onItemSelected
가 호출 될 것입니다? 스피너가 궁극적으로 단지 토스트를 내기를 원하지는 않을 것입니다. 나중에 사용하기 위해 어떤 가치를 설정할 것입니다. 예 : 당신은'myspinnerselecteditem = my.Spnner.getSecltedItem()'과 같은 것을 할 것입니다. 어떤 경우에는 여러 번 설정해야할까요? – MikeT예, 선택한 항목에 따라 회 전자의 동작이 다르지만 잠긴 화면에서 돌아올 때 onItemSelected가 실행된다는 문제가 있으므로 중요하지 않습니다. – FerDensetsu