2015-09-25 102 views
1

我跟進這個link一個例子引用我的錯誤:OkHttp:非靜態方法不能從靜態內容

Non-static method 'newCall(com.squareup.okhttp.Request) cannot be referenced from a static content

在此行中Call call = OkHttpClient.newCall(request);

這是代碼

public class MainActivity extends Activity { 

    public OkHttpClient client = new OkHttpClient(); 
    String requestUrl = " http://iheartquotes.com/api/v1/random?format=json"; 
    Request request = new Request.Builder().url(requestUrl).build(); 
    TextView text1; 
    public static final MediaType JSON = 
     MediaType.parse("application/json; charset=utf-8"); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     text1 = (TextView) findViewById(R.id.messageText); 
    } 

    call = OkHttpClient.newCall(request); 

} 

是什麼原因?

+0

這樣調用'client.newCall(request);' –

回答

2

您已經創建了一個客戶端。取而代之的

call = OkHttpClient.newCall(request); 

你的代碼應該是這樣的:

call = client.newCall(request); 

您需要在客戶端的創建的參考。

2

Non-static method 'newCall(com.squareup.okhttp.Request)

的錯誤意味着您正試圖調用類,它需要一個對象的實例,如方法標記靜態的方法。在你的情況下,newCallnot-static方法OkHttpClient,因此它需要訪問OkHttpClient的實例。