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

안드로이드 데이터 넘기기 질문입니다.

0 추천
안드로이드를 이용하여 현재 크롤링을 이용해서 데이터를 불러오는 앱을 제작중입니다.

앱의 구조는 MainActivity에서 PageAdapter를 저쳐 Fragment1, 2, 3 페이지를 슬라이드가 가능한 탭을 만들 수 있는 구조로 되어있고, PageAdapter가 그때그때 Fragment1, 2, 3을 만드는 구조입니다.

그리고 MainActivity에서 크롤링 작업을 수행하고 Fragment로 바로 String값을 넘기려고 했으나 위와 같은 구조때문에 그럴 수 없다는 것을 일주일동안 삽질하고 깨달았습니다.

MainActivity -> PageAdapter -> Fragment 순으로 실행된다는것을...

 

그래서 현재는 구조를 바꾸어 싱글톤 개념을 이용해서 String값을 넘기려고 합니다.

MainActivity에서 크롤링 하고 그걸 다른 싱글톤 Class로 넘기고

이후 Fragment에서 Singleton쪽을 호출하게되면 그때그때 데이터를 넘기는걸로요

 

혹시 MainActivity에서 Singleton으로 String을 넘기려면 어떻게해야할지 알수 있을까요??
마루아이 (710 포인트) 님이 2020년 5월 2일 질문

1개의 답변

+1 추천
 
채택된 답변

방법은 여러개 있습니다.

Activity 에 getter를 둬서 Fragment 에서 Activity의 getter 를 호출해 가져와도 되고, App global로 변수를 만드셔도 되고, 이벤트 리스너를 Activity에서 Fragment 생성 시 이벤트 리스너를 넣어 Fragment에서 이 리스너를 호출하여 값을 가져가도 되고,

 

말씀하신대로 아래 코드와 같이  싱글톤으로 구현해도 됩니다

    //Instance

    private static ExampleClass instance;
    

    private String value;
    //private construct
    private ExampleClass() {value = null;}

    public static ExampleClass getInstance() {
        if (instance == null) 
            { instance = new ExampleClass();}
        return instance;
    }

    public void setString(String value) { this.value =  value ;}
    public String getString() { return value ;}

=> 예제코드는 ExampleClass 라는 싱글톤으로 activity에서

 ExampleClass.getInstance().setString("원하는 값") 으로 설정하고,

fragment에서 ExampleClass.getInstance().getString() 를 호출한다는 가정으로 간략하게 만들었습니다

 

갯수가 만거나 여러곳에 이벤트를 전달해야 한다면 EventBus 쓰시는것도 방법입니다.

https://march3samwuli.tistory.com/entry/EventBus%EB%A1%9C-%EC%97%AC%EA%B8%B0%EC%A0%80%EA%B8%B0%EC%84%9C-%EC%89%BD%EA%B2%8C-%EC%BD%9C%EB%B0%B1-%EB%B0%9B%EA%B8%B0

익명사용자 님이 2020년 5월 4일 답변
마루아이님이 2020년 5월 6일 채택됨
감사합니다! ㅠㅠㅠㅠㅠㅠㅠㅠ
...