当我在android中使用接口时,如何将其作为方法返回?例如:
public interface Status {
public void Oncheck(boolean Ok);
}
和
public boolean Login(String Username, String Password)
{
apic.Execute_Bool(
"/Login_Small?username=" + Username + "&password=" + Password + "", new Status() {
@Override
public void Oncheck(boolean Ok) {
return ;
}
});
}
和
public void Execute_Bool(String Url,final Status callback)
{
Api_HttpClient.get(Url, null, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (statusCode==200)
callback.Oncheck(true);
else callback.Oncheck(false);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
callback.Oncheck(false);
}
});
}
当我使用Login(用户名,密码)时,没有返回bool。 但是在使用时
apic.Execute_Bool(
"/Login_Small?username=" + Username + "&password=" + Password + "", new Status() {
@Override
public void Oncheck(boolean Ok) {
return ;
}
});
在活动中它是有效的。 我该怎么做才能在methid中设置它?
答案 0 :(得分:0)
您的登录方法方法没有返回语句,我怀疑这段代码甚至可以这样编译 由于您已经在进行异步http调用,因此您无法真正获得同步返回的登录方法。您的代码将按以下顺序执行:
Trying out routing - Search
有两种方法可以解决这个问题:
您可以重构代码,以便调用Login的方法不需要返回值并编写另一个方法,然后从Oncheck方法调用该方法。
或者您可以寻找同步方式来发出该http请求,您必须检查该请求的文档。
顺便说一句,在java中,以大写字母开头的唯一名称是类名。方法和变量以小写字母开头使用camelCase(apic.executeBool)。