public class MainActivity extends UnityPlayerActivity {


 public void getFriends() {
  
  this.runOnUiThread(new Runnable() {
      public void run() {
       _getFriends();
      }
  });

 }
 
 public void _getFriends() {

  // 친구 목록 가져오기
  obj.friends(new friendListener() {

   public void onResult(obj.Status status, JSONObject json) {

    if (status.isSuccess()) {
 
     JSONArray friendArray = json.optJSONArray("GetfriendsList");

 

     final ArrayList<JSONObject> friends = new ArrayList<JSONObject>();

 

     for (int i = 0, n = friendArray.length(); i < n; i++) {
      
      JSONObject friend = friendArray.optJSONObject(i);
      
      if (friend != null)
       friends.add(friend);
     }
    }
   }
  });
}

 

 

이렇게 돌리면

별 에러없이 잘 돌아갑니다.

 

 

그런데 어레이를 아래처럼 메인엑티비티 쪽에 선언하면 다운됩니다.

 

 


public class MainActivity extends UnityPlayerActivity {

 

// 요기로 빼면 .. 이상한 에러가 나면서 다운 됩니다.

ArrayList<JSONObject> friends = new ArrayList<JSONObject>();

 


 public void getFriends() {

  this.runOnUiThread(new Runnable() {
      public void run() {
       _getFriends();
      }
  });

 }
 
 public void _getFriends() {

  // 친구 목록 가져오기
  obj.friends(new friendListener() {

   public void onResult(obj.Status status, JSONObject json) {

    if (status.isSuccess()) {
 
     JSONArray friendArray = json.optJSONArray("GetfriendsList");

 

     for (int i = 0, n = friendArray.length(); i < n; i++) {
      
      JSONObject friend = friendArray.optJSONObject(i);
      
      if (friend != null)
       friends.add(friend);  // friends 라는 어레이가 OnResult 밖에 메인에 선언되어있으면 다운 됩니다.
     }
    }
   }
  });
}

 

 

왜 그런지 잘 이해가 안되네요.

혹시 서로 쓰레드가 달라서 변수 공유가 안되는 건가요 ?

 

아무튼 메인 엑티비티에서

친구 결과 리스트 결과를 알아내서 받아오고 싶은데

OnResult 내에 선언해야만 다운이 안되니까 어떻게 해야할지를 모르겠네요.

 

결과를 OnResult 안에서 받아서

메인으로 넘기는 방법이 없을까요 ?