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

프래그먼트 xml파일을 액티비티xml파일 쓰고 기능의 문제

0 추천
현재 만들고 있는것중에서 화면전환을 위해 프래그먼트를 하나 만들었는데..

이 프래그먼트의 인플레이션하는 xml파일이 제가 이전에 만들었던 액티비티의 xml파일을 인플레이션 했습니다.

이 액티비티에는 각종 기능이 구현 되어있습니다. (혹시나해서 말씀드리지만 프래그먼트->프래그먼트의 화면전

환입니다)

프래그먼트에 xml파일만 인플레이션해서 연결했으니 화면전환시 제대로 보이기는 하는데..

문제는 xml파일만 연결되었으니 껍데기만 보이는 셈이에요.. 액티비티에 있는 기능은 당연 전혀 수행하지

못하는 상태인데..이 액티비티의 기능까지 그대로 사용가능하게 할 수있는 방법 없나요?
codeslave (3,940 포인트) 님이 2020년 10월 12일 질문

1개의 답변

0 추천

액티비티에는 로직들이 별도의 클래스에 있으면 생각보다 쉽게 재사용이 가능하겠죠?

MVP나 MVVM이라고 하는 디자인 패턴을 이용하세요. 로직에 뷰에 결합되 있으면 재사용이 엄청 힘들겁니다. 테스트도 쉽지 않구요.

pubic class MainActivity extends AppCompatActivity implements MainView {
    
    private MainPresenter presenter;

     public void onCreate(Bundle savedInstance) {
           super.onCreate(savedInstance);

           presenter = new MainPresenterImpl(this);

            findViewById(R.id.myButton).setOnClick {
                 presenter.doAction();
            }
     }

     public void doSomething() {
          // Do Something
     }
}


interface MainView {
    void doSomething()
}

interface MainPresenter {
    void doAction();
}

public class MainPresenterImpl implements MainPresenter {
     private final MainView view;

     public MainPresenter(MainView view) {
            this.view = view;
     }
    
     @Override
     public void doAction() {
          if (view == null) return

         // Do Action
     }
}

위의 예제는 MVP 패턴의 예제인데 핵심은 주요 로직은 Presenter 로 옮겨가고 Activity와 Presenter는 interface를 통해 이벤트를 주고 받습니다. 이렇게 하면 서로 의존성이 없어지기 때문에 프레그먼트에서 MainView 인터페이스를 구현하면 MainPresenter를 재사용할 수 있습니다.

spark (227,470 포인트) 님이 2020년 10월 12일 답변
...