Есть два класса MainActivity и results
1.первый класс MainActivity:
int full;
TextView text_c;
TextView textQ;
TextView textS;
Button button1;
Button button2;
Button button3;
int rA;
int i = 0;
int[][] Colors = {
{255, 255, 255,0, 0, 255,254, 243, 0,250,0,12},
{255, 0, 0,255, 255, 0,0,156,145,204,0,115},
};
private int score = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//называем кнопки
text_c = findViewById(R.id.text_v);
textQ = findViewById(R.id.textQuestion);
textS = findViewById(R.id.score);
button1 = findViewById(R.id.btn1);
button2 = findViewById(R.id.btn2);
button3 = findViewById(R.id.btn3);
//количество вопросов
full = Colors.length;
F1(Colors[i][0],Colors[i][1],Colors[i][2],Colors[i][3],Colors[i][4],Colors[i][5],Colors[i][6],Colors[i][7],Colors[i][8],Colors[i][9],Colors[i][10],Colors[i][11]);
button3.setOnClickListener(this);
button2.setOnClickListener(this);
button1.setOnClickListener(this);
}
//очистка текста кнопок
public void clearText() {
button1.setText("");
button2.setText("");
button3.setText("");
}
//установка цвета кнопок
public void setColor(Button t, int red, int green, int blue) {
t.setBackgroundColor(Color.argb(255, red, green, blue));
}
public void F1(int mred, int mgreen, int mblue, int pred, int pgreen, int pblue, int n1red, int n1green, int n1blue, int n2red, int n2green, int n2blue) {
textQ.setText("Какой цвет наиболее сочетаются с этим?");
textS.setText("ваши очки:"+score);
text_c.setBackgroundColor(Color.argb(255, mred, mgreen, mblue));
clearText();//очищаем текст кнопок
setColor(button1, pred, pgreen, pblue);
setColor(button2, n1red, n1green, n1blue);
setColor(button3, n2red, n2green, n2blue);
Random Rand = new Random();
int b = Rand.nextInt(3);
switch (b) {
case 0:
setColor(button1, pred, pgreen, pblue);
setColor(button2, n1red, n1green, n1blue);
setColor(button3, n2red, n2green, n2blue);
rA = 1;
break;
case 1:
setColor(button2, pred, pgreen, pblue);
setColor(button3, n1red, n1green, n1blue);
setColor(button1, n2red, n2green, n2blue);
rA = 2;
break;
case 2:
setColor(button3, pred, pgreen, pblue);
setColor(button1, n1red, n1green, n1blue);
setColor(button2, n2red, n2green, n2blue);
rA = 3;
break;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
//проверяем совпадает ли нажатая кнопка с правильным ответом
if (rA == 1) {
Toast.makeText(getApplicationContext(), "Правильно!:)", Toast.LENGTH_LONG).show();
score = score +10;
} else {
Toast.makeText(getApplicationContext(), "Не получилось(", Toast.LENGTH_LONG).show();
}
nextQ();
break;
case R.id.btn2:
if (rA == 2) {
Toast.makeText(getApplicationContext(), "Правильно!:)", Toast.LENGTH_LONG).show();
score = score + 10;
} else {
Toast.makeText(getApplicationContext(), "Не получилось(", Toast.LENGTH_LONG).show();
}
nextQ();
break;
case R.id.btn3:
if (rA == 3) {
Toast.makeText(getApplicationContext(), "Правильно!:)", Toast.LENGTH_LONG).show();
score = score + 10;
} else {
Toast.makeText(getApplicationContext(), "Не получилось(", Toast.LENGTH_LONG).show();
}
nextQ();
break;
}
}
public int getScore() {
return score;
}
public void nextQ() {
i = i + 1;
if (i<full) {
F1(Colors[i][0], Colors[i][1], Colors[i][2], Colors[i][3], Colors[i][4], Colors[i][5], Colors[i][6], Colors[i][7], Colors[i][8], Colors[i][9], Colors[i][10], Colors[i][11]);
}else if (i==Colors.length){
//вывести какую-нибудь заставочку с очками за викторину
Intent i;
i = new Intent(this, results.class);
startActivity(i);
}
}
2.второй класс result:
TextView result_m;
float procen1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.results_activity);
result_m = findViewById(R.id.result);
MainActivity tg = new MainActivity();
int scoreI = tg.getScore();
result_m.setText(""+scoreI);
}
В MainActivity устанавливается вопрос,в случае его правильного ответа, прибавляется переменной score 10. Затем в другом классе results я с помощью getter пытаюсь получить значение score из MainActivity. Выводит 0,вместо числа. Если в getter передаю просто переменную,над которой ничего не делаю, то все выводится нормально. В чем проблема? Сильно по поводу кода прошу не ругаться, с Java только недавно познакомился.
Проблема в том что
MainActivity tg = new MainActivity(); //создается новый объект, это уже не тот ваш MainActivity в котором вы что то делали..
int scoreI = tg.getScore();
result_m.setText(""+scoreI);
Создает новый экземпляр класса MainActivity, а так как он новый экземпляр, getScore() возвращает default значение int.
Почитайте как передаются данные между Activity, Fragment. Как вариант https://metanit.com/java/android/2.12.php
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
не получается запустить процедуру бд из java приложения, когда задаю параметры не по номерам столбцов, а по имени столбца
Есть код, который читает строку и парсит в intКак заставить видеть переменную s как int?
Пишу что-то вроде текстового редактора, текст в котором добавляется в элементе:
Как используя canvas нарисовать VectorDrawableОбычный Drawable у меня получается нарисовать конвертацией в Bitmap, но как нарисовать VectorDrawable, возможно ли это?