首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook Stetho库不适用于检查UI

Facebook Stetho库不适用于检查UI
EN

Stack Overflow用户
提问于 2016-12-19 21:10:58
回答 1查看 417关注 0票数 1

我的项目被正确配置为使用Stetho。而且它之前是有效的。

但是现在,当我检查我的应用程序的UI检查(元素部分)时,它不工作。而其他部分可以工作,比如参考资料。

DevTools还显示了我的应用程序的屏幕,但元素部分是空的。我不知道哪些更改禁用了stetho元素。

Stetho和Chrome之间有冲突吗?如果是,哪些版本是兼容的?目前我使用的是stehto 1.4.2和chrome v55。

任何解决方案都将不胜感激。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-02-23 21:15:11

为了实现用于Retrofit的singleton设计模式以及Stetho Network Interceptor实例,请参阅以下代码:

代码语言:javascript
复制
public class ApiClient extends Application {

    private static ApiClient apiClient = null; //singleton Object
    String apiURL = "http://your.url/";


    public static ApiClient getApiClient() {//getter for object
        if (apiClient == null)
            apiClient = new ApiClient();
        return apiClient;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }

    public Retrofit getClient() {//Retrofit instance
        int myTime = 15;
        OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder()
                .connectTimeout(myTime, TimeUnit.SECONDS)
                .readTimeout(myTime, TimeUnit.SECONDS)
                .writeTimeout(myTime, TimeUnit.SECONDS)
                .addNetworkInterceptor(new StethoInterceptor());

        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl(apiURL)
                .client(okHttpBuilder.build())
                .addConverterFactory(GsonConverterFactory.create());
        return builder.build();
    }
}

现在要使用retrofit,请参阅以下代码:

代码语言:javascript
复制
LoginDTO loginDTO = new LoginDTO(
            etPhno.getText().toString().trim(),
            etPass.getText().toString().trim()
    );

ApiService service = ApiClient.getApiClient().getClient().create(ApiService.class);
Call<LoginResp> call = service.loginAPI(loginDTO);
call.enqueue(new Callback<LoginResp>() {

    @Override
    public void onResponse(Call<LoginResp> call, Response<LoginResp> response) {

        LoginResp loginResp = response.body();

    }

    @Override
    public void onFailure(Call<LoginResp> call, Throwable t) {

        Toast.makeText(Login.this, "Error here", Toast.LENGTH_SHORT).show();
    }
});

在ApiService接口中,像这样声明函数:

代码语言:javascript
复制
    @POST("login")
    Call<LoginResp> loginAPI(@Body LoginDTO loginDTO);

LoginDTO类是这样的:

代码语言:javascript
复制
public class LoginDTO {
    @SerializedName("log_phno")
    @Expose
    private String user;

    @SerializedName("log_pass")
    @Expose
    private String pass;

    public LoginDTO(String user, String pass) {
        this.user = user;
        this.pass = pass;
    }

    public String getUser() {
        return user;
    }

    public String getPass() {
        return pass;
    }
}

现在是最重要的部分,转到清单文件,在<application>标记下,在单例类名前面加上一个点(.)如下所示:

代码语言:javascript
复制
android:name=".Controller.ApiClient"

最后,要看到Stetho Interceptor的魔力,请运行您的应用程序,打开Google Chrome并输入chrome://inspect/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41223356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档