마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다른 클래스에 정의된 url을 이용하여 파일을 다운받는 액티비티를 구현하고 싶습니다.

0 추천
안녕하세요 초보개발자가 삼일밤 삽질을 해도 문제가 해결되지 않아 도움을 부탁드립니다.

인터넷에서 구한 소스코드를 베이스로 하여 테스트중인데,

원본 소스코드에서 해당 클래스파일(DownloadActivity)에서 url을 직접 정의했던 부분만 다른 클래스(GetUrl)에서 받아서 쓰고자하는것이 목적입니다.

public void onClick(View v) {

              final String fileURL = "~~~"

...

}

 

이 부분을

public void onClick(View v) {

              GetURL geturl = (GetURL) getApplicationContext();
              geturl.testVolly();
              final  String fileURL =  geturl.fileURL;

 

...

}

이렇게 바꿨는데, fileURL안에 계속 null이 입력됩니다.

분명 geturl.testVolly(); 메소드를 먼저 실행시켜서 geturl 클래스상의 fileURL을 변경했다고 생각했는데

왜 null이 나올까요??

 

GetURL 클래스는 다음과 같습니다.

public class GetURL extends Application {

    public String fileURL;

    public void testVolly() {

        RequestQueue queue = Volley.newRequestQueue(GetURL.this);

      

       // 이 곳은 url을 적어둔 txt파일 링크입니다.

      String url ="https://~~~~~~";

        

       StringRequest stringRequest = new StringRequest(Request.Method.GET, url,

                new Response.Listener<String>() {

                    @Override

                    public void onResponse(String response) {

                        String res[] = response.split("\n");

                        

                      // 이 곳은 txt파일로부터 2번째 줄에 적힌 url을 불러 전역변수 fileURL에 저장하는 과정입니다.

                       fileURL = res[1];

                

                    }

                }, new Response.ErrorListener() {

            @Override

            public void onErrorResponse(VolleyError error) {

                Log.d("AAA", "That didn't work!");

            }

        });

 

        queue.add(stringRequest);

 

    }

 

}

 

감사합니다.
앱개발잘하고싶어요 (150 포인트) 님이 2017년 11월 5일 질문

1개의 답변

0 추천
 
채택된 답변

StringRequest가 통신을 하는 코드라,

 sync 방식으로 동작하는 아니라 .async 방식이라.  fileURL = res[1]; 가 호출되기 전의 값이 반환되서,

그렇습니다.

 

asynctask 등을 사용해서 리턴값을 받은 이후  동작되게 변경 해 보세요.

http://egloos.zum.com/geneus/v/3473245

 

 

 

 

익명사용자 님이 2017년 11월 6일 답변
앱개발잘하고싶어요님이 2017년 11월 11일 채택됨
...