2017-03-03 1 views
-1

무효화 된 내부에서 색상 값을 가져오고 싶습니다. 어떻게해야합니까? 어떤예요? 색상이 null입니다.onResponse 변수가 null입니다. run()

protected void onCreate(Bundle savedInstanceState) { 

    this.context = getApplicationContext(); 
    OkHttpClient client = new OkHttpClient(); 
    okhttp3.Request request = new okhttp3.Request.Builder() 
      .url("http://ip/color.php") 
      .build(); 
    client.newCall(request).enqueue(new Callback() { 
     @Override 
     public void onFailure(Call call, IOException e) { 
      e.printStackTrace(); 
     } 
     @Override 
     public void onResponse(Call call, final Response response) throws IOException { 
      String color = response.body().string(); 
      Profile.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        setTheme(color); 
       } 
      } 
     } 
    });... 
+1

입니다. 이는 '최종'이어야합니다. 어떻게 컴파일 할 수 있을지 궁금해. – azizbekian

+1

받고있는 응답을 게시하십시오. – Ash

+0

@AsutoshPanda 컴파일하지 않습니다. 그것은 말합니다 : 변수 색상 내부 클래스 내에서 액세스입니다 –

답변

1

이 변수 색상이 내부 클래스 내에서 액세스 할 말한다면, 글로벌과 변수 색상합니다

public void onResponse(Call call, final Response response) throws IOException { 
     String color = response.body().string(); 
     Profile.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       setTheme(color); //color is null here. 
      } 
     } 
    } 

색상() 전체 코드가 실행 내부 null입니다. onCreate 외부에 선언하십시오.

아니면 최종

final String color = response.body().string(); 
1

먼저가 "폐쇄"내부가 아닌 최종 변수에 액세스 할 수있는 모든 코드는 컴파일하지 말아야의합니다. 그러면 필요한 유일한 변경 사항은

final String color = response.body().string(); 
Profile.this.runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
      setTheme(color); 
    } 
} 
관련 문제