Здравствуйте, у меня есть класс логики (Test), из которого необходимо вызвать другое Activity методом startActivityForResult (Или каким-то другим образом получить информацию из запускаемого Activity).
public class Test {
private ArrayList<Question> questions;
private Context context;
public Test(Context context, ArrayList<Question> questions) {
this.questions = questions;
this.context = context;
}
public Test(Context context, Question... questions) {
for (Question question : questions) {
this.questions.add(question);
}
this.context = context;
}
public void addQuestion(Question question) {
questions.add(question);
}
public double testing() throws Exception {
Question[] array = new Question[questions.size()];
array = questions.toArray(array);
Main.shake(array);
int result = 0;
for (Question question : array) {
Intent intent = new Intent("com.gopea_system.phisickgame.game.test");
intent.putExtra("isTest", true);
intent.putExtra("com.gopea.QuestionsID", question.getID());
//context.startActivityForResult(intent,1); // it's doesn't work???
context.startActivity(intent);
int getScore = 0;
if (getScore != -1000) {
result += getScore;
} else {
throw new Exception("Incorrect return to Test.testing");
}
Log.d("Gopea"," now result = " + result);
}
return result / (array.length * 100);
}
}
В методе testing() необходимо запустить Activity и узнать значение (результат), которое должно быть возвращено в класс Test. Как это можно сделать?
Intent intent = new Intent(context, MainActivity.class);
((Activity) context).startActivityForResult(intent, resultCode);
Для запуска активности вам нужно в метод testing()
или в конструктор класа Test
нужно передать текущий контекст. Для получение значения с другой активности имеет смысл использовать startActivityForResult
.Пример:
Запускаем нужную активность SecondActivity
public static final REQUEST_CODE = 1;
public static final REQUEST_ID = "some_id";
Intent intent = new Intent(context, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
В активности которую запустили нужно вернуть интент.
Intent intent = new Intent();
intent.putExtra(REQUEST_ID, some_variable);
setResult(RESULT_OK, intent);
finish();
И принимаем результат с помощью onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {return;}
String text = data.getStringExtra(REQUEST_ID);
}
Для примера получал текст но интент имеет методы для получения и других типов.Удачи!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, есть проблема: работать с RFID RC522 с Java на Raspberry pi 3 Model BПроблема заключается в поиске библиотеки, гугл результатов не дал
Как в java работать с вероятностями? Допустим, у меня есть переменная int x, которая с вероятностью 50% равна 1; c вероятностью 30% равна 2; и c вероятностью...
Пытаюсь реализовать графический многопоточный чат на сокетах с использованием JavaFX, но не могу понять, как происходить обмен сообщениями...
Есть у меня вот такой обобщённый метод для отправки запроса и получения сразу десериализованного объекта