메시지에 작업 추가

Compose 방식 사용해 보기
Jetpack Compose는 Android에 권장되는 UI 도구 키트입니다. Compose에서 알림을 추가하는 방법 알아보기
<ph type="x-smartling-placeholder"></ph> 스낵바 → 를 통해 개인정보처리방침을 정의할 수 있습니다.

작업이나 Snackbar 사용자가 메시지에 응답할 수 있습니다. 이렇게 하면 Snackbar는 메시지 텍스트 옆에 버튼을 배치하여 사용자는 버튼을 탭하여 작업을 트리거합니다. 예를 들어 이메일 앱은 '이메일 보관처리됨'에 실행취소 버튼 메시지가 표시됩니다. 사용자가 실행취소 버튼을 누르면 앱이 이메일을 보관 파일에서 다시 꺼냅니다.

실행취소 작업 버튼이 있는 스낵바를 보여주는 이미지
그림 1. 다음과 같은 실행취소 작업 버튼이 있는 Snackbar 삭제된 항목을 복원합니다.

Snackbar 메시지에 작업을 추가하려면 리스너 객체를 정의합니다. 이를 구현하는 View.OnClickListener 인터페이스에 추가되었습니다. 시스템은 리스너의 onClick() 메서드를 호출합니다. 예를 들어 이 스니펫은 실행취소 작업의 리스너입니다.

Kotlin

class MyUndoListener : View.OnClickListener {

  fun onClick(v: View) {
    // Code to undo the user's last action.
  }
}

자바

public class MyUndoListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {

        // Code to undo the user's last action.
    }
}

다음 중 하나를 사용하세요. setAction() 메서드를 사용하여 리스너를 Snackbar에 연결합니다. 모든 리스너가 show(), 다음 코드 샘플에 표시된 대로 사용하세요.

Kotlin

val mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
                               R.string.email_archived, Snackbar.LENGTH_SHORT)
mySnackbar.setAction(R.string.undo_string, MyUndoListener())
mySnackbar.show()

자바

Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
        R.string.email_archived, Snackbar.LENGTH_SHORT);
mySnackbar.setAction(R.string.undo_string, new MyUndoListener());
mySnackbar.show();
Jetpack Compose를 사용하는 경우 SnackbarHost, 다음과 같습니다.

Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {

      super.onCreate(savedInstanceState)

      setContent {
          DACPlaygroundTheme {
              val snackbarHostState = remember { SnackbarHostState() }
              val scope = rememberCoroutineScope()
              Scaffold(
                  snackbarHost = { SnackbarHost(snackbarHostState) },
                  content = { padding ->
                      Button(
                          modifier = Modifier.padding(padding),
                          onClick = {
                              scope.launch {
                                  snackbarHostState.showSnackbar(
                                      message = "1 item removed",
                                      actionLabel = "UNDO",
                                      duration = SnackbarDuration.Short
                                  ).run {
                                      when (this) {
                                          Dismissed -> Log.d("SNACKBAR", "Dismissed")
                                          ActionPerformed -> Log.d("SNACKBAR", "UNDO CLICKED")
                                      }
                                  }
                              }
                          }
                      ) { Text("Show snackbar") }
                  }
              )
          }
      }
  }
  
<ph type="x-smartling-placeholder">