Допустим, у меня есть mainactivity, контролирующий поток моего приложения. В этом упражнении у меня есть список данных, которые иногда обновляются.Возможно ли запустить объект с объектом вместо класса?
Основная активность начинает другие действия на основе пользовательских входов.
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (id == 0) {
openLogin();
}
if (id == 1) {
Intent intent = new Intent(getApplicationContext(), MyGame.class);
intent.putExtra("game", getGame());
intent.putExtra("bonus", getBonusFields());
startActivityForResult(intent, 0);
}
if (id == 2) {
scoreboardIntent = new Intent(getApplicationContext(), ScoreBoard.class);
Bundle scoreboardBundle = new Bundle();
scoreboardBundle.putSerializable("players", scores);
scoreboardIntent.putExtra("players", scoreboardBundle);
scoreboardOpen = true;
startActivityForResult(scoreboardIntent, 0);
}
}
То, что я хотел бы сделать это вместо того, чтобы начать намерению с ScoreBoard.Class, я хотел бы начать его со ссылкой на объект ScoreBoard так, что можно сделать что-то вроде этого:
ScoreBoard scoreboard = new ScoreBoard();
startActivityForResult(scoreboardIntent, 0);
//then if my datalistener triggers
scoreboard.updateStuff();
Я знаю, что могу переместить слушателя в класс Scoreboard, но мне было интересно, возможно ли это сделать так же.
Любое понимание будет оценено по достоинству.
EDIT: После аналогичной работы CommonsWare деятельность будет представлять собой отдельные страницы. В настоящее время существует три действия, и, хотя они все разделены, двум из них нужен доступ к одной и той же БД. 1. Главное меню. Это список, содержащий (помимо прочего) варианты запуска новой игры или просмотра таблицы лидеров. 2. Игра. Эта активность не взаимодействует ни с чем другим, кроме обратного вызова из mainmenus startActivityForResult(); После окончания игры счет возвращается и должен быть где-то сохранен в БД. 3. Лидерская доска. Эта активность показывает лучшие результаты в списке.
Итак, вот моя дилемма: если я поместил слушателя базы данных в mainmenu, я смогу сохранить обратный вызов Game в DB, и я смогу запустить таблицу лидеров со списком, переданным через bundle или intentextras. Однако я не смогу обновить таблицу лидеров, когда мой слушатель отреагирует на изменение базы данных. Если я поместил слушателя БД в таблицу лидеров, я сразу же смогу отобразить изменения в базовых данных, но я не смогу сохранить баллы из новых игр, не добавляя также объекты БД в основное меню. (Если я чего-то не хватает)
Я думаю, что лучшим решением было бы позволить mainmenu иметь доступ к БД и превратить таблицу лидеров в список фрагментов, который, когда активен, отображается поверх основного меню. Любые предложения по другим решениям или объяснениям того, что мне не хватает, будут очень признательны, поскольку мне кажется, что мое понимание того, как взаимодействует деятельность, может быть немного ошибочным.
Рассмотрите возможность использования фрагментов, которые позволят вам создавать и управлять частями вашего пользовательского интерфейса, не выходя из текущего Activity для вашей логики управления. –
@DougStevenson Спасибо, я думаю, что переключу таблицу лидеров в список фрагментов. Обновленный вопрос, чтобы лучше объяснить, чего я пытался достичь. –