Java 我的方法总是返回0,忽略条件
我读过一些相关的问题,比如和,但问题是Java 我的方法总是返回0,忽略条件,java,android,methods,int,return,Java,Android,Methods,Int,Return,我读过一些相关的问题,比如和,但问题是int不能承受更大的价值。就我而言,情况并非如此 我在按钮的OnClick中调用下面的方法,但它总是返回0 public int showRadioAlertDialog(final Button button, String title, final List<String> list, int selectedIndex) { final AlertDi
int
不能承受更大的价值。就我而言,情况并非如此
我在按钮的OnClick
中调用下面的方法,但它总是返回0
public int showRadioAlertDialog(final Button button, String title,
final List<String> list, int selectedIndex) {
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(title);
builder.setCancelable(false);
builder.setSingleChoiceItems(list.toArray(new String[list.size()]),
selectedIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which > -1) {
position = which;
}
}
});
builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
printLog("List position = " + list.get(position));
if (position > -1) {
button.setHint(list.get(position));
}
}
});
builder.setNegativeButton("Cancel", null);
AlertDialog dialog = builder.create();
dialog.show();
if (position > -1) {
return position;
} else {
return -1;
}
}
public int showRadioAlertDialog(最终按钮、字符串标题、,
最终列表,int selectedIndex){
final AlertDialog.Builder=新建AlertDialog.Builder(mContext);
建造商名称(名称);
builder.setCancelable(false);
builder.setSingleChoiceItems(list.toArray(新字符串[list.size()]),
selectedIndex,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
如果(哪个>-1){
位置=哪个;
}
}
});
setPositiveButton(“确认”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
printLog(“List position=“+List.get(position));
如果(位置>-1){
button.setHint(list.get(position));
}
}
});
builder.setNegativeButton(“取消”,null);
AlertDialog=builder.create();
dialog.show();
如果(位置>-1){
返回位置;
}否则{
返回-1;
}
}
位置
是一个全局变量。我所期望的是它应该返回
-1
或所选位置的索引
-1
为什么0
请解释一下为什么它是
0
。如果您将整型变量定义为全局变量,则会自动给出默认值,值为0。在您的例子中,有一个在show()方法调用之后的条件代码。这意味着调用show()方法后,将立即执行代码。由于0>-1,因此您将始终得到0。希望这对你有帮助。如果要在单击对话后添加位置,则在对话的回调方法中,需要显式地将值设置为该变量位置。返回将不起作用。因为当你点击对话按钮时,值已经返回。为什么o回来了我已经提到了我答案的开头。你称之为:
if (position > -1) {
return position;
} else {
return -1;
}
设置onClickListeners之后。问题是,当事件发生时,onClickListeners是从不同的线程调用的,这意味着在设置position
时,该值已经返回
使用onCLickListener时,无法获得正确的返回方法,因为它们被称为内部类(如果扩展了onCLickListener,则称为方法)。请改用回调方法(以下是伪代码,无效。请不要复制粘贴并期望它正常工作):
调试呢?看起来您没有更新位置,并且在单击“确认”时始终为0。您从未将值设置为“位置”,因此它将始终返回0。
... onClick(){
callback(position);
}
...
void callback(position){
do whatever with the variable
}