Por favor, me ajudem - Android Studio erro?

Oi, pessoal. Eu estudo programação e nesse ano estou estudando o Android Studio, fiz um programa simples na prova em que eu devia calcular a média ponderada e a professora disse que por eu ter assinado o método onClick como protected isso ocasionava erro e não executava o aplicativo, o problema é, o aplicativo executa sim! No meu celular, dos meus amigos, no meu computador(por um emulador), sempre funciona. Tentei executar como private e deu erro então acho que ela se confundiu. Alguém sabe se dá algum erro usando protected? Por favor
O código é esse(da primeira Activity, pois ela podia ir pra outras duas Activitys mas a questão é o onClick do botão aqui):

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
public EditText nota1;
public EditText nota2;
public EditText nota3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    nota1 = findViewById(R.id.nota1);
    nota2 = findViewById(R.id.nota2);
    nota3 = findViewById(R.id.nota3);
}

protected void calcule(View view) {
    double Nota1 = Double.parseDouble(nota1.getText().toString());
    double Nota2 = Double.parseDouble(nota2.getText().toString());
    double Nota3 = Double.parseDouble(nota3.getText().toString());
    double calc1 = (Nota1 * 3)/10;
    double calc2 = (Nota2 * 3)/10;
    double calc3 = (Nota3 * 4)/10;
    double resu = calc1+calc2+calc3;

    if (resu >= 7.0 ) {
        Intent a = new Intent(this, Main2Activity.class);
        a.putExtra("resultado", resu);
        startActivity(a);
    }else if(resu<7.0){
        Intent b = new Intent(this, Main3Activity.class);
        b.putExtra("resultado2", resu);
        startActivity(b);
    }
}

}

isso, talvez possa ajudar:
https://pt.stackoverflow.com/questions/23/qual-%C3%A9-a-diferen%C3%A7a-entre-modificadores-public-default-protected-e-private

Estou entendendo que vc tem no seu layout algo parecido com isso:

<Button android:text="Calcular"
        android:onClick="calcule"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

Se for isso mesmo, fiz o teste e é como você descreveu. Funciona perfeitamente usando public e protected e dá erro com private.

Sendo assim, na minha opinião, sua professora errou, pois ela afirmou que daria erro, coisa que não acontece.

O que acontece é que na documentação oficial fica estabelecido que a assinatura de qualquer método usado no onClick deve ser public, retornar void e ter uma View como parametro. Assim:

public void calcule(View view) { /* ... */ }

Veja aqui: https://developer.android.com/guide/topics/ui/controls/button#HandlingEvents

Só que na prática, o código abaixo funciona perfeitamente:

protected int calcule(View view) { return 123; }

Então, acredito que dá para ponharmos da seguinte forma:

Por convenção, todo método declarado no onClick deve ter assinatura exatamente como descrito na documentação oficial.

Se todos nós, desenvolvedores, seguirmos a convenção, fica mais fácil de nos comunicarmos e de entendermos os códigos uns dos outros.

Ou seja, embora não seja o que a documentação exige, o uso do protected não causa erro como sua professora afirmou, logo, continuo achando que ela errou.

1 curtida