Есть несколько проблем с вашей реализацией.
1) Внутри randomise_digits вы устанавливаете значения digit1 и digit2, но это локальные переменные , а не переменные экземпляра, объявленные внеметода.Таким образом, любые изменения в digit1 и digit2 внутри randomise_digits () не отражаются на digit1 и digit2 вашего объекта MainActivity.Вот почему вы получаете 0, потому что они фактически не установлены на какое-либо значение (поскольку вы ссылаетесь на переменные экземпляра digit1 и digit2 в вашем методе Calculate ()).Локальные digit1 и digit2 в вашем методе randomise_digits () теперь не входят в сферу действия / больше не существуют.
2) Измените имя вашего метода, чтобы лучше отражать его действия.Ваш метод Calculate (), вероятно, должен быть переименован в show ().Вам не нужно передавать View-объекты как параметры для всех ваших методов.Вы их не используете, так зачем их включать?
3) Вам не нужно создавать два случайных объекта для вычисления двух случайных чисел.Все будет хорошо.
Ваш класс, вероятно, должен выглядеть примерно так:
package uk.co.myrayner.sophiestimestables;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
int digit1;
int digit2;
int show_answer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button calculateButton = findViewById(R.id.your_calculate_button_id);
calculateButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
randomise_digits();
calculate();
}
});
}
public void randomise_digits() {
Random rand1 = new Random();
digit1 = rand1.nextInt(12) + 1;
displaydigit1(digit1);
digit2 = rand1.nextInt(12) + 1;
displaydigit2(digit2);
}
public void calculate() {
show_answer = (digit1 * digit2);
displayanswer(show_answer);
}
private void displaydigit1(int number) {
TextView digit1TextView = (TextView) findViewById(R.id.digit1);
digit1TextView.setText("" + number);
}
private void displaydigit2(int number) {
TextView digit2TextView = (TextView) findViewById(R.id.digit2);
digit2TextView.setText("" + number);
}
private void displayanswer(int number) {
TextView answerTextView = (TextView) findViewById(R.id.show_answer);
answerTextView.setText("" + number);
}
}
Убедитесь, что удалили все события onclick в XML-макете своей деятельности, если решили скопировать и вставитькод выше.