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

Activity 위에 Fragment에서 Activity 객체

0 추천

Activity 위에 Fragment를 얹어서 화면을 띄우고 있습니다..

Activity에서 생성한 객체를

 //ex1 Activity.java
 public class Activity extends AppCompatActivity {

 Class class;

 @Override
 protected void onCreate(Bundle savedInstanceState) {

     class = new Class();


액티비티 위에 작성된 fragment에서 적용하고 싶은데 방법이 있을까요?

 //ex2 Fragment.java

 public class Fragment extends Fragment {

 Class class;

 @Override 
 public View onCreateView() {
        class = ????



아예 불가능한건지 아니면 어떤 방법을 사용해야하는 혹시 아신다면 도움을 조금 만 주세요~ㅠㅠ

 

따블이 (260 포인트) 님이 2017년 2월 2일 질문

1개의 답변

0 추천
질문자님이 구현하신 Activity명을 MainActivity 라고 가정하고

MainActivity 안에 원하시는 객체를 리턴하는 getter 를 구현합니다. 물론 public 이어야 겠지요.

 

그리고 Fragment 함수에 getActivity가 있을겁니다. getActivity를 질문자님께서 구현하신 MainActivity클래스로 캐스팅하시고

MainActivity mainActivity = (MainActivity) getActivity();

mainActivity.getObject();

이런식으로 하여 가져다가 사용하시면 됩니다.
Development Guy (70,570 포인트) 님이 2017년 2월 2일 답변
아 정말 명쾌한 답변입니다 ㅠㅠ
감사합니다 새해 복 많이 받으세요!~
답변자님 !!

 저렇게 참조한 객체를

MainActivity -> Fragment1.setVisibility(View.GONE); , Fragment1.setVisibility(View.VISIBLE);

인데 MainActivity에서 통신 connect를 해논 상태에서
Fragment1에서 위처럼 액티비티의 통신객체를 참조한 객체를 이용해서 메소드를 사용하려고 했는데 이런식으로 focus가 fragment에 있으면 객체를 사용못하나요??
UI 조작은 되도록 메인쓰레드에서 하도록 해야합니다.
통신이라면 혹시 별도 쓰레드에서 visible 속성을 조작하시는 건가요?
그럼 핸들러 안에서 조작하도록 하세요.
UI부분을 건들지는 않아서 제 수준 논리에서는 된다고 생각했는데 에러가 났었습니다. 답변자님 께서 알려주신 방법에서

class = mainActivity.getObject(); 를 해서 class객체를 사용하면 오류가 나는데
객체 사용을 참조 안시키고 mainActivity.getObject().메소드  <- 요런식으로 사용하니까 오류가 발생하지 않습니다!  

덕분에 해결했습니다! 감사합니다!!
...