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 안에서 받아서
메인으로 넘기는 방법이 없을까요 ?
_getfriends 함수가 friends 를 return 하면되는거 아닌가요.. 꼭 void를 하실 필요가 있는부분 인가요..