我有一个非常非常混乱的方法。我想从处理程序返回ints
。我的代码是这样的:
public void getCasesFromFolder() {
msg = handler.obtainMessage();
timer.schedule(new TimerTask(){
public void run(){
if(folder.list().length == 0) {
msg.obj = "0";
handler.sendMessage(msg);
}
else {
msg.obj = Integer.toString(folder.list().length) ;
handler.sendMessage(msg);
}
}
}, delay, 3000);
}
private Handler handler = new Handler() {
@SuppressWarnings("unchecked")
@Override
public void handleMessage(Message m) {
String message = (String) m.obj;
if(message.equals("0")) {
returnValues(0);
}
else {
returnValues(Integer.parseInt(message));
}
}
public int returnValues(int i) {
if(i == 0)
return 0;
else
return i;
}
};
当然,这不起作用。如何从处理程序返回int?
答案 0 :(得分:2)
在类中创建一个int
属性,并使您的处理程序在handleMessage()
方法中设置其值而不是返回它。
顺便说一下,你的returnValues(
)方法完全没用,因为它可以简化为只return i;
,只会返回参数。
答案 1 :(得分:1)
它不起作用,因为void
无法返回任何内容。还有这个功能:
public int returnValues(int i) {
if(i == 0)
return 0;
else
return i;
}
绝对没有。此外,您不会以任何方式操纵对象。您正在调用函数returnValues
,该函数不对Handler
对象的任何属性执行变异(或设置操作)。这意味着当调用returnValues
时,您只是丢弃结果,因为它将超出范围。