3

我在这一行 wsresult = restClientInterface.skuska(); 上遇到空指针异常;用于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();       
            }
4

1 回答 1

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

于 2013-02-20T13:13:25.117 回答