본문 바로가기
안드로이드 자바

[Java][Android] Hilt 활용 예시 만들기

by teamnova 2025. 6. 28.
728x90

오늘은 Hilt를 활용해 textview에 특정 객체로 부터 전달받은 데이터가 적용되는 예시를 만들어 보겠습니다.



 

그래들 설정

=> 프로젝트 레벨 gradle 파일에 위와 같이 적용해줍니다 (버전 정보는 아래의 공식홈페이지 정보를 참고해주세요)

=> 앱 레벨 gradle 파일에 위와 같이 적용해줍니다

 

=> 앱 레벨 gradle 파일에 위와 같이 적용해 줍니다. (버전 정보는 아래의 공식홈페이지 정보를 참고해주세요)

 

https://dagger.dev/hilt/gradle-setup

 

Gradle Build Setup

Hilt dependencies To use Hilt, add the following build dependencies to the Android Gradle module’s build.gradle file: dependencies { implementation 'com.google.dagger:hilt-android:2.56.2' annotationProcessor 'com.google.dagger:hilt-compiler:2.56.2' // Fo

dagger.dev



 

 

레이아웃 xml 파일 코드(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="16dp">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Loading..."
        android:textSize="24sp"
        android:textColor="@android:color/black" />

</LinearLayout>

 

 

 

 

 

 

Application 상속 클래스 코드

@HiltAndroidApp
public class MyApplication extends Application {

}

+

Manifest 파일 설정

=> application 태그 내에 android:name 속성을 활용해 Application 클래스의 상속 클래스를 사용하도록 설정합니다.



 

 

 

 

 

액티비티 자바 코드

@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {

    @Inject
    MessageProvider messageProvider;  // Hilt가 자동으로 넣어줌

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.textView);

        // messageProvider객체를 new로 만들지 않았는데 사용 가능
        // 기존 loading... 메세지가 massageProvider 객체의
        // 메세지로 변경됨
        textView.setText(messageProvider.getMessage());
    }
}



 

 

 

 

textview에 메세지를 제공할 클래스 코드

public class MessageProvider {
    @Inject
    public MessageProvider() {
    }

    public String getMessage() {
        return "MessageProvider 객체의 메세지로 업데이트";
    }
}


 

 

 

 

실행 결과

 

=> 기존 textview에 있던 'Loading...' 문구 대신 다른 객체로 부터 받은 문구가 적용된 것을 확인할 수 있습니다.