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

특정 클래스의 생성자 activity를 인자로 넘겨줘서 addContentView를 하면 안되는건가요?

0 추천
cocos2d-x로 게임을 만들었는데 베너광고도 붙이고 하다보니 기본 AppActivity가 너무 지저분해서

클래스를 만들어 기능별로 분류하고 싶어서 해봤는데 잘 안되네요~

쉽게 될꺼라고 생각했는데 jni를 통해 자바함수 호출시 private이냐 public이냐에 따라서도 다르게 동작하는 등

원인을 알 수 없는 버그들이 생겨나는 것을 보고 왜 이런지 알 수가 없어서요...

기존 AppActivity 클래스에서 베너용 프레임을 만들기 위해 레이아웃 생성 후

addContentView 를 호출했을 때는 잘 동작했던것이 BannerAds 클래스로 빼고 생성자에 Activity를 넘겨줘서

activity.setContentView하니 스레드가 죽습니다. 별다른 메시지가 없이 스레드가 죽었다고 띄우곤 종료되네요;;;

원인 하시는분?
손봉 (120 포인트) 님이 2014년 6월 11일 질문

2개의 답변

0 추천
Activity를 넘겨주는 것보다는 차라리 Context를 넘겨주는 것이 더 나을것 같은데요

해당 내용이 Thread라는 상관이 없어 보이는데, 로그상으로는 별다른 내용이 없는건가요?

차라리 BannerAds 클래스 안에서 public class를 하나 생성하고 그안에 추가하고자 하는 view를 inflate하여 class 생성시 같이 붙여서 나오게 하는게 더 깔끔해 보이기도 하네요;
빅클라인 (4,520 포인트) 님이 2014년 6월 12일 답변
0 추천
제가 알기로는 그럴경우 생성자로 넘겨주어서 호출하게 되면 그 클래스에서 수동적으로 생성된 public 메소드만 호출이 가능하구요. activity를 확장하여 override된 메소드안에서 super된 onCreate의 setContentVIew의 경우는 호출할수 없다라고 알고있습니다. 만약 그렇게 하고 싶다면 별도의 public 메소드를 만드시고 거기에 파라미터를 넘기셔서 super.setContentVIew를 호출하심이 맞다라고 생각이 되네요.
쭈쭈총각 (17,750 포인트) 님이 2014년 6월 12일 답변
...