我这行上的gettin空指针异常wsresult = restClientInterface.skuska(); for restClientInterface。这是我的样本:
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import com.googlecode.androidannotations.annotations.rest.Get;
import com.googlecode.androidannotations.annotations.rest.Rest;
@Rest(rootUrl = "http://my_ip_address/webresources", converters = {GsonHttpMessageConverter.class})
public interface RestClient {
@Get("/persons")
String skuska();
}
我正在使用片段
@EFragment
public class HomeFragment extends Fragment {
private Button ws;
private TextView wsstring;
private String wsresult;
@RestService
RestClient restClientInterface;
wsstring = (TextView) view.findViewById(R.id.wsstring);
ws = (Button) view.findViewById(R.id.ws);
ws.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
getWSResult();
wsstring.setText(wsresult);
}
});
return view;
}
@Background
public void getWSResult() {
wsresult = restClientInterface.skuska();
}
答案 0 :(得分:2)
在片段准备就绪后,您的RestClient应该由AA正确注入。 你能复制/粘贴生成的类来看看发生了什么吗?
此外,您正在调用getWSResult()
(这是一种背景方法),并在您在TextView中设置Rest调用的结果之后。但是,在尝试在对象中设置结果之前,您无法说明结果是否已到达。
你应该试试像这样的代码:
@EFragment(R.layout.homeFragment)
public class homeFragment extends Fragment {
@ViewById
Button ws;
@ViewById
TextView wsstring;
@RestService
RestClient restClientInterface;
private String wsresult;
@Click
void wsstringClicked() {
getWSResult();
}
@Background
void getWSResult() {
wsresult = restClientInterface.skuska();
}
@UiThread
void updateUI() {
wsstring.setText(wsresult);
}
}
编辑:刚刚删除了private
已注明字段
@ViewById
EDIT2:想一想。你是如何在活动中使用这个片段的?
您使用的是@FragmentById
还是@FragmentByTag
?