0
我只有一个片段附加到使用replace的活动。当设备在几秒钟后锁定屏幕,然后解锁它时,即使片段视图(EditTexts等)和微调器所选项目保持不变,分配给某个微调器的onItemSelected方法也会被执行。如何停止onItem从锁定屏幕返回时被选中执行
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方法。
我一直在尝试使用布尔值和Fragment的onSaveInstanceState和onActivityCreated方法,但我还没有想出一种方法来停止onItemSelected方法执行时,设备从锁定屏幕返回。
你有什么打算?你不可能希望微调者最终发出祝酒词。你可能会设置一些价值,然后才能使用。例如你可能会做一些像'myspinnerselecteditem = my.Spnner.getSecltedItem()'在这种情况下,它会被重复设置多次? – MikeT
是的,微调器根据选定的项目执行不同的操作,但没关系,因为我的问题是onItemSelected从锁定屏幕返回时执行。 – FerDensetsu