开发者社区 问答 正文

Lambda表达式问题

BroadcastReceiver refreshDataReceiver = (context,intent)-> {

        if (AppConstants.REFRESH_DATA_ACTION.equals(intent.getAction())) {
            taskInfos.clear();
            taskInfos.addAll(mTaskDao.queryMyTasks());
            mAdapter.notifyDataSetChanged();
        }
};

Cannot resolve method 'getAction()'

BroadcastReceiver refreshDataReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (AppConstants.REFRESH_DATA_ACTION.equals(intent
                .getAction())) {
            taskInfos.clear();
            taskInfos.addAll(mTaskDao.queryMyTasks());
            mAdapter.notifyDataSetChanged();
        }
    }
};

这个就正常,为什么?

展开
收起
蛮大人123 2016-03-06 19:26:55 2391 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    首先你得声明context和intent的类型:
    BroadcastReceiver refreshDataReceiver = (Context context,Intent intent)-> {
    然后你把这个lambda赋值给一个Receiver是没有意义的,一个lambda只做了一件事(onReceive),而一个Receiver包含了更多的方法和数据成员。如果你想要把一个lambda赋给一个对象,那么就要求这个对象的类型
    是一个Functional Interface:
    `
    @FunctionalInterface
    public interface someclass {}
    `
    而BroadcastReceiver并不是一个FunctionalInterface,所以不能这么搞。

    2019-07-17 18:55:02
    赞同 展开评论
问答地址: