我收到以下错误

无法恢复活动{com.xxx.yyy.zzz.HomeActivity}:java.lang.IllegalArgumentException:比较方法违反了其一般约定!

我正在为字符串处理空值情况,即使出现此错误也是如此。关于可能出问题的任何提示。下面的代码

public class ConversationComparer implements Comparator<Conversation> {
@Override
public int compare(Conversation x, Conversation y) {

    if (x.getLastMessageDate() == null) {
        return 1;
    }

    if (y.getLastMessageDate() == null) {
        return -1;
    }

    return y.getLastMessageDate().compareTo(x.getLastMessageDate());

}}


public java.util.Date getLastMessageDate() {
        return lastMessageDate;
    }


这就是我使用比较器的方式

if (conversationListAdapter != null) {
            Collections.sort(this.list,new ConversationComparer());
            conversationListAdapter.notifyDataSetChanged();
        }

最佳答案

我唯一看到的问题是您没有正确处理x.getLastMessageDate()y.getLastMessageDate()都是null的情况。

我认为,如果将此行添加到方法的开头,则它符合合同要求。

if (x.getLastMessageDate() == null && y.getLastMessageDate() == null)
    return 0;

10-02 11:29