Method that Saves user text messaging draft
In both cases (!hasDraft and not !hasDraft) you check whether the enteredText is empty. You can hoist that into a boolean variable outside the if statement.

Also, you are testing if (!hasDraft) but then also doing an else on that condition, which means else (if not)not hasDraft. That can be confusing, so unless some other part of your code flow requires it, I suggest you make your if statement be if (hasDraft) {} else {} so that the implied not from the else matches the !hasDraft case.

boolean noEnteredText = TextUtils.isEmpty(enteredText);

if (hasDraft) {
    if (noEnteredText) {
        removePreviousDraft();
    else {
        overwritePreviousDraft();
    }
} else {
    if (noEnteredText) {
        sendMessage();
    } else {
        saveDraftAndRefreshList();
    }
}


This does not read well, IMO. Again, though, it might be fine in the context of your other code. But I wonder if reversing the sense of noEnteredText to be hasEnteredText would make it better?

boolean hasEnteredText = !TextUtils.isEmpty(enteredText);

if (hasDraft) {
    if (hasEnteredText) {
        overwritePreviousDraft();
    else {
        removePreviousDraft();
    }
} else {
    if (hasEnteredText) {
        saveDraftAndRefreshList();
    } else {
        sendMessage();
    }
}


This still seems off. But I suspect that's probably because I don't know your app. Is it possible you're trying to do too much, and the two decisions should be at two different levels of method call?