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

코틀린을 자바로 변경..

0 추천
코틀린으로 작성된 코드의 일부분 입니다.(Frag)

var mainactivity  = (activity as MainActivity)

mainactivity?.toolbar_username?.text = argument?.getString("userId")

 

위에 코드를 자바로 바꿔주실분 있으신가요...?

toolbar_username는 TextView이고

argument?.getString("userId")는 다른 Frag에서 Bundle을 이용해 데이터를 전달할겁니다.

 

제가 궁금한거는

var mainactivity  = (activity as MainActivity)

mainactivity?.

이 부분입니다.

캐스팅 하는 부분인거 같은데 지식이 부족해서 무슨내용인지 잘 모르겠습니다....
개미1 (1,260 포인트) 님이 2022년 5월 10일 질문

1개의 답변

0 추천
MainActivity mainactivity  =  (MainActivity) activity;
if (mainactivity != null) {
    String userId = getArgument().getString("userId");
    mainactivity.getToolbar_username().setText(userId);
}

getToolbrtoolbar_username() 는 IDE에서 직접 확인을 해야 정확한 필드명을 알 수 있을 듯 합니다. 개인적으로는 mainactivity를 직접 캐스팅하는 것 보다는 MainActivity를 인터페이스를 구현하게 하고 인터페이스를 통해 접근하는 것이 재사용에 좀 더 용이할 듯합니다.

public interface HasToolbar {
    void setToolbarTitle(String title):
}

public class MainActivity implements HasToolbar {

     @Override
     public void setToolbarTitle(String title) {
           toolbar_username.setText(title);
     }
}

// Fragment
private HasToolbar toolbarOwner;

@Overrride
public void onAttach (Context context) {
    super.onAttach(context);
    if (context instanceof HasToolbar) {
           toolbarOwner = (HasToolbar) context;
    }
}

 

spark (227,470 포인트) 님이 2022년 5월 10일 답변
spark님이 2022년 5월 11일 수정
...