我正在创建一个聊天应用程序,我导入了这个3年的项目,所以很多事情都改变了,尤其是这个我无法修复的东西,有人能帮我吗?谢谢

给我的错误是:

com中的"updateToken(java.lang.String)".科德夫.聊天apply.碎片.ChatsFragment"无法应用于"(com.google.android.gms.tasks.Task<java.lang.String>)"

public class ChatsFragment extends Fragment {

private RecyclerView recyclerView;

private UserAdapter userAdapter;
private List<User> mUsers;

FirebaseUser fuser;
DatabaseReference reference;

private List<Chatlist> usersList;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_chats, container, false);

    recyclerView = view.findViewById(R.id.recycler_view);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

    fuser = FirebaseAuth.getInstance().getCurrentUser();

    usersList = new ArrayList<>();

    reference = FirebaseDatabase.getInstance().getReference("Chatlist").child(fuser.getUid());
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            usersList.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                Chatlist chatlist = snapshot.getValue(Chatlist.class);
                usersList.add(chatlist);
            }

            chatList();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    updateToken(FirebaseMessaging.getInstance().getToken());


    return view;
}

private void updateToken(String token){
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Tokens");
    Token token1 = new Token(token);
    reference.child(fuser.getUid()).setValue(token1);
}

private void chatList() {
    mUsers = new ArrayList<>();
    reference = FirebaseDatabase.getInstance().getReference("Users");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUsers.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                User user = snapshot.getValue(User.class);
                for (Chatlist chatlist : usersList){
                    if (user.getId().equals(chatlist.getId())){
                        mUsers.add(user);
                    }
                }
            }
            userAdapter = new UserAdapter(getContext(), mUsers, true);
            recyclerView.setAdapter(userAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

推荐答案

您将收到以下错误:

com中的"updateToken(java.lang.String)".科德夫.聊天apply.碎片.ChatsFragment"无法应用于"(com.google.android.gms.tasks.Task<;java.lang.String>;)"

因为你用错误的参数调用updateToken()方法.在使用任务对象调用该方法时,您定义该方法以获取字符串参数,因此出现了错误.如果要获取令牌并正确调用方法,请使用以下代码行:

FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            String token = task.getResult();
            updateToken(token);
            Log.d("TAG", token); //Check the generated token.
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

Java相关问答推荐

使用ExecutorService时在ThreadFactory中触发自定义newThread函数

如何将kotlin代码转换为java

强制Mockito返回null而不是emtpy list

方法没有用正确的值填充数组—而是将数组保留为null,'

如何在Java中声明未使用的变量?

相同的Java SerializedLambda为implMethodKind返回不同的结果

Java流传输一个列表并创建单个对象

我如何解释这个错误?必需类型:供应商R,提供:收集器对象,捕获?,java.util.List java.lang.Object>>

Arrays.hashcode(int[])为不同的元素提供相同的散列

为什么同步数据块无效?

来自外部模块的方面(对于Java+Gradle项目)不起作用

错误:未找到扩展元素在JBossEAP 7.2中安装FUSE时出错

Spring动态反序列化JSON可以是列表,也可以只是一个对象

如何使用MapStrCut转换双向链接

具有多个模式的DateTimeForMatter的LocalDate.parse失败

为什么这种递归会有这样的行为?

使用迭代器遍历HashMap不会因IF条件而停止

如何在右击时 Select 新行?

使用同步方法中的新线程调用同步方法

using case default on switch语句返回;预览特征切换中的模式匹配仅在源级别20及以上的情况下可用;