یک اقدام به پیام اضافه کنید

روش Compose را امتحان کنید
Jetpack Compose جعبه ابزار UI توصیه شده برای اندروید است. با نحوه افزودن اعلان در Compose آشنا شوید.

می‌توانید عملی را به Snackbar اضافه کنید تا کاربر به پیام شما پاسخ دهد. وقتی این کار را انجام می‌دهید، Snackbar دکمه‌ای را در کنار متن پیام قرار می‌دهد و کاربر می‌تواند با ضربه زدن روی دکمه، اقدام شما را آغاز کند. به عنوان مثال، یک برنامه ایمیل ممکن است یک دکمه لغو را روی پیام "ایمیل بایگانی شده" خود قرار دهد. اگر کاربر روی دکمه لغو ضربه بزند، برنامه ایمیل را از بایگانی خارج می کند.

تصویری که نوار اسنک را با دکمه اقدام UNDO نشان می‌دهد
شکل 1. یک Snackbar با یک دکمه عمل لغو که یک مورد حذف شده را بازیابی می کند.

برای افزودن یک عمل به پیام Snackbar ، یک شی شنونده تعریف کنید که رابط View.OnClickListener را پیاده سازی کند. اگر کاربر روی عمل پیام ضربه بزند، سیستم onClick() شنونده شما را فراخوانی می کند. به عنوان مثال، این قطعه یک شنونده را برای یک عمل واگرد نشان می دهد:

کاتلین

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() شنونده را ضمیمه کنید:

کاتلین

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 را نشان دهید، همانطور که در مثال زیر نشان داده شده است:

کاتلین

    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") }
                  }
              )
          }
      }
  }