2017-05-24 59 views
0

我已經搜索谷歌過去3小時無果,我不知道這是甚至可能的。自定義類擴展AsyncHttpResponseHandler並返回修改後的字節

我在10-12個不同的活動中使用AsyncHttpResponseHandler,並且在初始代碼中每個活動的代碼大約有50行,它們都是對「byte []字節」進行初始轉換。

我該如何做字節轉換,然後返回自定義類被調用的活動的最終值?

我將如何引用消息變量?

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    AsyncHttpClient client = new AsyncHttpClient(); 
    client.post(URL, params, new VenueAsyncHttpResponseHandler() { 

     @Override 
     public void onSuccess(int i, Header[] headers, byte[] bytes) { 
      //How do I reference the transformed message here? 
      switch (message) { 
       case "success": 
        //Do something 
        break; 
      } 

     } 
    }); 
} 
} 

使用自定義類

public class VenueAsyncHttpResponseHandler extends AsyncHttpResponseHandler { 
@Override 
public void onSuccess(int i, Header[] headers, byte[] bytes) { 
    String byteToString = null; 
    JSONObject response = null; 
    String message = ""; 
    try { 
     byteToString = new String(bytes, "UTF-8"); 
     response = new JSONObject(byteToString); 
     message = response.getString("response"); //return this to the activity 
    } catch (UnsupportedEncodingException | JSONException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { 

} 
} 
+0

請發佈[mcve]。特別是,你需要一個帶有方法的類。您發佈的代碼將不會編譯,因爲這些代碼缺失。 –

+0

@ Code-Apprentice我不是在尋找關於我的特定代碼的幫助,我是在問如何實現某些東西。如果我對成功方法的反應進行操作,那麼當我使用自定義類時,我將如何拉動所述操縱響應? – Shaun

+0

我**不**請您發佈您的特定代碼。我**我**要求你發佈**編譯**的代碼。感謝您最近的編輯。 –

回答

0

當一個方法添加到您的活動類,你想要做與消息的內容。然後從onSuccess()調用這個方法。

另外,不要創建一個匿名的內部類。請直接實例化您的自定義類:

VenueAsyncHttpResponseHandler handler = new VenueAsyncHttpResponseHandler(); 
client.post(URL, params, handler);