我收到以下错误,但我不知道如何解决它 .

致命异常:OkHttp Dispatcher进程:com.aviato.android.aviato,PID:9042 java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序

at android.os.Handler.<init>(Handler.java:200)
        at android.os.Handler.<init>(Handler.java:114)
        at android.widget.Toast$TN.<init>(Toast.java:457)
        at android.widget.Toast.<init>(Toast.java:119)
        at android.widget.Toast.makeText(Toast.java:286)
        at com.aviato.android.aviato.ui.BubblesActivity$2.onFailure(BubblesActivity.java:377)
        at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:175)
        at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)

似乎错误出现在代码的这一部分(我在runOnUiThread中猜测):

@Override
public void onResponse(Response response) throws IOException {
    try {
        String jsonData = response.body().string();
        Log.v(TAG, jsonData);
        if (response.isSuccessful()) {
            final String transportationValue = getTransportationValue(jsonData);
            runOnUiThread(new Runnable() {
                @Override
                    public void run() {
                        Toast.makeText(BubblesActivity.this,
                                        transportationValue,
                                        Toast.LENGTH_SHORT).show();
                        updateDisplay(transportationValue);
                    }
                });
            } else {
                alertUserAboutError();
            }
        } catch (IOException e) {
            Log.e(TAG, "Exception caught: ", e);
        } catch (JSONException e) {
            e.printStackTrace();
        } 
    }
}

private String getTransportationValue(String jsonData) throws JSONException {
    JSONObject response = new JSONObject(jsonData);
    String status = response.getString("status");

    int counter = 0;

    if (status.equals("OK")) {
        // It returned a good result. Keep going...
        JSONArray routes = response.getJSONArray("routes");

        for (int i = 0; i < routes.length(); i++) {
            JSONObject currentRoute = routes.getJSONObject(i);
            JSONArray legs = currentRoute.getJSONArray("legs");

            for (int j = 0; j < legs.length(); j++) {
                JSONObject currentLeg = legs.getJSONObject(i);
                JSONObject duration = currentLeg.getJSONObject("duration");
                counter += duration.getInt("value");
            }
        }

    } else {
        return "No";
    }
    return counter + "";
}

private void updateDisplay(String data) {

    mTransportValue.setText(data);

}