Немного о правильности написания кода. Какой вариант выбрать?
Много уровней вложенности плохо читаются. Попробуйте добавить внутрь условияif (rulesField.isChecked()) {
    register(numberField.getText().toString(), codeField.getText().toString());
}
Ещё парочку вложенных if-else, чтобы получилось вот такое:@Override
    public void onButtonClick() {
        if (isRequested()) {
            if (rulesField.isChecked()) {
                    if (canProceed()) {
                         register(numberField.getText().toString(), codeField.getText().toString());
                    } else if (isExtraRequestRequired()) {
                        doSomething();
                     } else if (oneMoreCondition()) {
                         doSmomethingOnExtraCondition();
                     } else {
                          Log.e("Unexpected condition");
                     }
            } else {
                showMessage(R.string.error_rules);
            }
        } else {
            requestRegister(numberField.getText().toString());
        }
    }
 и вы поймёте, что удерживать в голове ту ветку, которая вам интересна (сначала if, потом вложенный в него else, потом второй if-else из вложенных в else первого if'а) становится решительно невозможно. Поэтому и стараются так структурировать код, чтобы он был "плоским", то есть без вложенности. Это, конечно идеал, и иногда труднодостижимый, но стремиться к нему стоит - человек, который после вас будет читать ваш листинг (а чаще всего это будете вы сами недели через две после того, как вы его написали, и успешно забыли всю структуру), скажет вам спасибо.
Первый вариант, рано или поздно, может превратиться в: