【问题标题】:WHAT "item ->" STANDS FOR IN .setOnMenuItemClickListener(item -> {}) [duplicate].setOnMenuItemClickListener(item -> {}) 中的“item ->”代表什么 [重复]
【发布时间】:2021-09-04 08:08:03
【问题描述】:

这是 MY ANDROID STUDIO 中的代码......它所做的一切,当您单击工具栏中的项目时,它会创建小吃店。 我的问题是,为什么我的 udemy 老师使用“item -> {}”作为参数,而 .setOnMenuItemClickListener() 中的人使用 new OnMenuItemClickListener() ???

代码:

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

    rootLayout = findViewById(R.id.myLayout);

    Toolbar toolbar = findViewById(R.id.toolbar);
    toolbar.setTitle("Basic Components");
    toolbar.inflateMenu(R.menu.menu_main);
    toolbar.setOnMenuItemClickListener(item -> {

        switch (item.getItemId()) {
            case R.id.simple_snackbar:
                showSimpleSnackBar();
                break;
            case R.id.snackbar_action_callback:
                showSnackBarWithACtionCallback();
                break;
            case R.id.custom_snackbar:
                showSnackBarWithColoredText();
                break;
        }
        return false;
    });
}

【问题讨论】:

  • 只是表示被点击的菜单项
  • 它是一个 lambda 函数。它简化了您的代码。看看这个链接,例如:stackoverflow.com/questions/57320007/…
  • Lambda 表达式。 item 作为参数(名称)传递到 { } 内部的函数中。这用于代替一个类,通常是一个匿名类,匹配函数setOnMenuItemClickListener()的参数

标签: java android


【解决方案1】:

它是一个Lamda表达式项->意味着...

toolbar.setOnMenuItemClickListener(item -> {})

可以写成:

toolbar.setOnMenuItemClickListener(new 
MenuItem.OnMenuItemClickListener(){});

【讨论】:

  • 差不多。它缺少参数(项目)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多