gpt4 book ai didi

Android - 微调器 : how may I distinguish user's actions from computer's actions in a OnItemSelectedListener

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:15 25 4
gpt4 key购买 nike

我在管理微调器时遇到了麻烦,所以我可以寻求你的帮助吗?

我有一个带有适配器的旋转器。开始我的 Activity 时,我使用值列表初始化微调器。然后我强制选择的值成为我管理的对象中使用的值。

屏幕初始化后:当用户在微调器中选择一个值时,根据选择的值,我可能会继续(或不)到另一个 Activity ,让用户选择一个补充和必要的值。如果用户“取消”了第二个 Activity ,我想将微调器回滚到之前选择的值,并取消同时进行的一些操作。如果用户进入第二个 Activity 的末尾,一切都很好,我希望用第二个 Activity 中选择的数据刷新微调器显示(我重载适配器中的 getView 方法来执行此操作)。

总的来说,我可以轻松完成所有这些操作,但是,当我在 Activity 开始时在微调器中强制选择值时,或者通过“取消”从第二个 Activity 返回时,会捕获更改值事件第二个 Activity 被触发(用户根本没有点击任何东西)。

仅当微调器中所选值的更改是由于用户的手动操作导致的,您如何允许启动第二个 Activity ,并防止在微调器的值更改时启动相同的第二个 Activity “在代码中”?

我尝试了很多解决方案,例如在适配器中设置一个 bool 值,以告知下一个事件是否会因“代码中”操作而引发。或者也可以在适配器中放置一个 bool 值,以告知适配器是否已自行初始化,并且我在第一次更改捕获事件时强制将该 bool 值设置为 true。但没有什么能真正发挥作用。

感谢您的帮助。

奥利弗

最佳答案

我一直用 bool 标志解决这个问题,它一点也不漂亮,但如果你想通了,它会起作用。

这个想法或多或少,创建一个全局可用 bool 值并用false初始化,在onSelectedItemListener()中使用该 bool 值来选择是否触发action,重要的是要记住在计算机第一次自动选择它后将其设置为 true,并在 onResume() 方法中将其重置为 false。

这并不完美,但应该可以。

编辑:

bool spinnerUsable1;
bool spinnerUsable2;
int positionSpinner;

public void onCreate(Bundle savedInstanceState){
spinnerUsable1 = false;
spinnerUsable2 = true;
if(savedInstanceState != null){
positionSpinner = savedInstanceState.getInt("posSpinner");
if(positionSpinner != 0) spinnerUsable2 = false;
}

//Declare your spinner, set the on item selected lister
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
boolean spinnerUsable = (spinnerUsable1 && spinnerUsable2);
if (!spinnerUsable1) {
spinnerUsable1 = true;
} else if (!spinnerUsable2) {
spinnerUsable2 = true;
}
if (spinnerUsable) {
//Action;
}
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// Nothing
}
});
}

这样的事情应该可行。

关于Android - 微调器 : how may I distinguish user's actions from computer's actions in a OnItemSelectedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com