Я разрабатываю игру, в которой моим основным занятием (GameActivity) являются прятки. Затем есть второе действие (InventoryActivity), где игроки могут использовать предметы, влияющие на их характеристики (например, количество очков жизни). Я могу получить очки жизни текущего игрока во втором действии и изменить их, если он использует предмет из своего инвентаря. Проблема возникает, когда я заканчиваю второе действие: очки жизни не отправляются в основное действие.
Я думаю, что это проблема намерения, которое не возвращается должным образом в основное действие. p>
Чтобы получить информацию для моего второго действия, я сделал следующее в своем основном действии:
@Override
protected void onActivityResult(int requestCode , int resultCode, данные намерения @Nullable) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1001 && resultCode == RESULT_OK && data != null) {
ArrayList itemsFound = data.getParcelableArrayListExtra("ITEMS_FOUND");
ArrayList playerInventory = data.getParcelableArrayListExtra("PLAYER_INVENTORY");
int updatedHearts = data.getIntExtra("CURRENT_PLAYER_HEARTS", 0); // Récupérer les points de vie mis à jour
currentPlayerIndex = data.getIntExtra("CURRENT_PLAYER_INDEX", 0); // Mettre à jour l'indice du joueur actuel
Player modifiedPlayer = data.getParcelableExtra("CURRENT_PLAYER"); // Récupérer le joueur mis à jour
if (modifiedPlayer != null) {
for (int i = 0; i < allPlayers.size(); i++) {
Player currentPlayer = allPlayers.get(i);
if (currentPlayer.getName().equals(modifiedPlayer.getName())) {
allPlayers.set(i, modifiedPlayer);
updateHeartsDisplay(modifiedPlayer.getHearts());
Log.d("GameActivity", "Joueur mis à jour : " + modifiedPlayer.getName() + ", Points de vie : " + modifiedPlayer.getHearts());
break;
}
}
}
}
} `
Чтобы запустить инвентаризацию с использованием намерений, я использовал следующее:
`private void launchInventoryActivity(Player currentPlayer) { // Prepare data for inventory activity ArrayList itemsFound = new ArrayList(); Item lastItemAdded = currentPlayer.getLastItemAdded(); if (lastItemAdded != null) { itemsFound.add(lastItemAdded); } ArrayList playerInventory = new ArrayList(); playerInventory.addAll(currentPlayer.getItems()); Intent inventoryIntent = new Intent(GameActivity.this, InventoryActivity.class); inventoryIntent.putParcelableArrayListExtra("ITEMS_FOUND", itemsFound); inventoryIntent.putParcelableArrayListExtra("PLAYER_INVENTORY", playerInventory); inventoryIntent.putExtra("CURRENT_PLAYER", currentPlayer); // Add logs to verify data sent to InventoryActivity inventoryLauncher.launch(inventoryIntent); }`
Наконец, в своем вторичном действии я возвращаю информацию об игроке (с его измененными очками жизни) в свое основное действие;
private void finishTurn() {
int currentPlayerIndex = getIntent().getIntExtra("CURRENT_PLAYER_INDEX", 0);
Intent intent = new Intent();
intent.putExtra("CURRENT_PLAYER_HEARTS", currentPlayer.getHearts());
intent.putExtra("CURRENT_PLAYER_INDEX", currentPlayerIndex + 1);
intent.putExtra("CURRENT_PLAYER", currentPlayer);
setResult(RESULT_OK, intent);
finish();
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... nt-returns
Основное действие не обновляет результаты намерений ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1711896843
Anonymous
Я разрабатываю игру, в которой моим основным занятием (GameActivity) являются прятки. Затем есть второе действие (InventoryActivity), где игроки могут использовать предметы, влияющие на их характеристики (например, количество очков жизни). Я могу получить очки жизни текущего игрока во втором действии и изменить их, если он использует предмет из своего инвентаря. Проблема возникает, когда я заканчиваю второе действие: очки жизни не отправляются в основное действие.
Я думаю, что это проблема намерения, которое не возвращается должным образом в основное действие. p>
Чтобы получить информацию для моего второго действия, я сделал следующее в своем основном действии:
@Override
protected void onActivityResult(int requestCode , int resultCode, данные намерения @Nullable) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1001 && resultCode == RESULT_OK && data != null) {
ArrayList itemsFound = data.getParcelableArrayListExtra("ITEMS_FOUND");
ArrayList playerInventory = data.getParcelableArrayListExtra("PLAYER_INVENTORY");
int updatedHearts = data.getIntExtra("CURRENT_PLAYER_HEARTS", 0); // Récupérer les points de vie mis à jour
currentPlayerIndex = data.getIntExtra("CURRENT_PLAYER_INDEX", 0); // Mettre à jour l'indice du joueur actuel
Player modifiedPlayer = data.getParcelableExtra("CURRENT_PLAYER"); // Récupérer le joueur mis à jour
if (modifiedPlayer != null) {
for (int i = 0; i < allPlayers.size(); i++) {
Player currentPlayer = allPlayers.get(i);
if (currentPlayer.getName().equals(modifiedPlayer.getName())) {
allPlayers.set(i, modifiedPlayer);
updateHeartsDisplay(modifiedPlayer.getHearts());
Log.d("GameActivity", "Joueur mis à jour : " + modifiedPlayer.getName() + ", Points de vie : " + modifiedPlayer.getHearts());
break;
}
}
}
}
} `
Чтобы запустить инвентаризацию с использованием намерений, я использовал следующее:
`private void launchInventoryActivity(Player currentPlayer) { // Prepare data for inventory activity ArrayList itemsFound = new ArrayList(); Item lastItemAdded = currentPlayer.getLastItemAdded(); if (lastItemAdded != null) { itemsFound.add(lastItemAdded); } ArrayList playerInventory = new ArrayList(); playerInventory.addAll(currentPlayer.getItems()); Intent inventoryIntent = new Intent(GameActivity.this, InventoryActivity.class); inventoryIntent.putParcelableArrayListExtra("ITEMS_FOUND", itemsFound); inventoryIntent.putParcelableArrayListExtra("PLAYER_INVENTORY", playerInventory); inventoryIntent.putExtra("CURRENT_PLAYER", currentPlayer); // Add logs to verify data sent to InventoryActivity inventoryLauncher.launch(inventoryIntent); }`
Наконец, в своем вторичном действии я возвращаю информацию об игроке (с его измененными очками жизни) в свое основное действие;
private void finishTurn() {
int currentPlayerIndex = getIntent().getIntExtra("CURRENT_PLAYER_INDEX", 0);
Intent intent = new Intent();
intent.putExtra("CURRENT_PLAYER_HEARTS", currentPlayer.getHearts());
intent.putExtra("CURRENT_PLAYER_INDEX", currentPlayerIndex + 1);
intent.putExtra("CURRENT_PLAYER", currentPlayer);
setResult(RESULT_OK, intent);
finish();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78248390/main-activity-not-updating-intent-returns[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия