Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何进行改装';s从活动回调到类_Java_Android_Retrofit - Fatal编程技术网

Java 如何进行改装';s从活动回调到类

Java 如何进行改装';s从活动回调到类,java,android,retrofit,Java,Android,Retrofit,我以前在活动中使用CreateBoothBar()。由于活动超过了4-5百行,我将其移动到一个单独的类中,但现在我不知道如何访问我的updateMap() updateMap代码是: private void updateMap(String path) { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(API_URL) .build(); MyS

我以前在活动中使用CreateBoothBar()。由于活动超过了4-5百行,我将其移动到一个单独的类中,但现在我不知道如何访问我的updateMap()

updateMap
代码是:

private void updateMap(String path) {
    RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(API_URL)
            .build();

    MyService service = restAdapter.create(MyService.class);
    service.points(path, context);                
}
其中,接口为:

public interface MyService {
@GET("/{point}")
void points(@Path("point") String path, MainActivity cb);
}
我应该在何处/如何移动/更改改装的回调,以便使其继续工作


PS:我知道这更像是一个java问题,而不是android。

用于回调的类必须实现
回调
接口。请参阅此处了解更多信息 因此回调不依赖于活动类,而是依赖于回调接口的实现。因此,您可以将
updateMap()
方法放在您喜欢的任何类中,因为它不依赖于上下文。下面是一个简短的例子

因此,您的界面可能如下所示

例如,在下面的活动中使用该类是一个简短的伪代码

MyRestClientClass mRestClientClass=new MyRestClientClass();
//在内部实例化rest客户端
mRestClientClass.initializeRestClient();
//例如,单击按钮后调用updateMap
setOnClickListener(新的OnClickListener(){
//请注意,这与改装回调的工作方式相同
公共void onClick(视图v){
//调用您的web服务
mRestClientClass.updateMethod();
}
});
public interface MyService {
    @GET("/{point}")
    void points(@Path("point") String path, Callback<YourClassType>);
}
public class MyRestClientClass{
    //class context
    MyService mService;

    //helper method for service instantiation. call this method once
    void initializeRestClient()
    {
        RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(API_URL)
            .build();
        mService = restAdapter.create(MyService.class);
    }

    //your service request method
    void updateMap()
    {
        mService.points(....)
    }
}