【问题标题】:Snackbar inside Volley's onErrorResponse does not execute Action codeVolley 的 onErrorResponse 内的 Snackbar 不执行 Action 代码
【发布时间】:2017-04-24 13:57:36
【问题描述】:

我正在使用VolleyRequest 来提取数据。但是,当出现错误时,会显示一条消息,使用 Snackbar 通知用户互联网连接速度很慢,他们可以重试。然而,点击 Action 按钮什么也没做,而是 Snackbar 只是消失并且不调用该方法。 Snackbar 显示在请求的 onErrorResponse() 内。
我该如何解决这个问题?这是我的代码:

@Override
public void onErrorResponse(VolleyError error) {
    Log.e(TAG, error.toString());

    hasInternet = false;
    snackbar = Snackbar.make(coordinator, "Slow internet connection detected", Snackbar.LENGTH_INDEFINITE)
            .setAction("RETRY", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   makeRequest();
                }
            });
    snackbar.show();
}

【问题讨论】:

    标签: android android-volley android-snackbar


    【解决方案1】:

    试试这个。

    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e(TAG, error.toString());
    
        // Use getActivity().runOnUiThread(...) if it's a fragment.
        // In the case of activity
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                hasInternet = false;
                snackbar = Snackbar.make(coordinator, "Slow internet connection detected", Snackbar.LENGTH_INDEFINITE)
                        .setAction("RETRY", new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                makeRequest();
                            }
                        });
                snackbar.show();
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2016-11-28
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2021-08-13
      相关资源
      最近更新 更多