gpt4 book ai didi

android - 微调器 setOnItemSelectedListener 内的 AlertDialog

转载 作者:行者123 更新时间:2023-11-30 03:56:08 24 4
gpt4 key购买 nike

是否可以在微调项更改时创建警告消息,但如果用户单击“否”应取消选择,所选项目应保持原样。如果我存储最后选择的微调器项目并在用户选择否时将其传递给微调器它会触发我不想要的 onItemSelectedListener。

我尝试使用 OnTouchListener 但这无济于事,因为在触摸微调器后立即显示微调器列表。

请参阅下面的代码以便更好地理解。



 spinnerSearch.setOnItemSelectedListener(new OnItemSelectedListener() {

@覆盖
public void onItemSelected(AdapterView parentView, View selectedItemView, final int position, long id) {

如果(!ShoppingCart.isEmpty()){
AlertDialog.Builder dialog = new AlertDialog.Builder(SearchProductActivity.this);
dialog.setMessage("Selecting new finacier will empty your basket.").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//做一些工作
//存储lastSelectedFinancier
}

}).setNegativeButton("否", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();
//取消选择
//spinnerSearch.setSelection(lastSelectedFinancier)

}

});

AlertDialog alert = dialog.show();

TextView messageView = (TextView) alert.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);
} 别的 {
//做一些其他的工作
//lastSelectedFinancier
}

}

@覆盖
public void onNothingSelected(AdapterView arg0) {
//TODO 自动生成的方法 stub

}

//lastSelectedFinancier

});

最佳答案

我在复选框方面遇到了同样的问题:我设置了一个 onCheckedChangeListener 来监听用户输入,然后我从设置或警报对话框更新复选框,就像你正在做的那样,这再次触发 onCheckedChangeListener :) 这就是我的工作方式周围:

1) 而不是“spinnerSearch.setOnItemSelectedListener(new OnItemSelectedListener() {...)”,使用全局声明创建新的 OnItemSelectedListener 对象。我将其称为 myClickListener

2) 在这个对象的主体中,当您创建警报对话框时,在“No”按钮声明中,稍微更改您的代码以将监听器设置为 null,然后更改微调器值,然后设置再次监听 myClickListener。

尝试像这样修改您的代码,如果可行请告诉我:



 private OnItemClickListener myClickListener = new OnItemSelectedListener() {

@覆盖
public void onItemSelected(AdapterView parentView, View selectedItemView, final int position, long id) {

如果(!ShoppingCart.isEmpty()){
AlertDialog.Builder dialog = new AlertDialog.Builder(SearchProductActivity.this);
dialog.setMessage("Selecting new finacier will empty your basket.").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//做一些工作
//存储lastSelectedFinancier
}

}).setNegativeButton("否", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
//修改后的代码:
spinnerSearch.setOnItemSelectedListener(null)//禁用onItemClickListener
spinnerSearch.setSelection(lastSelectedFinancier)//取消选择,同时关闭OnClickListener
spinnerSearch.setOnItemSelectedListener(myClickListener)//启用onItemClickListener
dialog.dismiss();
}

});

AlertDialog alert = dialog.show();

TextView messageView = (TextView) alert.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);
} 别的 {
//做一些其他的工作
//lastSelectedFinancier
}

}

@覆盖
public void onNothingSelected(AdapterView arg0) {
//TODO 自动生成的方法 stub

}

//lastSelectedFinancier

});//myClickListener 声明结束


//这进入你的代码:
spinnerSearch.setOnItemSelectedListener(myClickListener)

关于android - 微调器 setOnItemSelectedListener 内的 AlertDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326335/

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