2016-03-13 1 views
0

Допустим, у меня есть 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 иметь доступ к БД и превратить таблицу лидеров в список фрагментов, который, когда активен, отображается поверх основного меню. Любые предложения по другим решениям или объяснениям того, что мне не хватает, будут очень признательны, поскольку мне кажется, что мое понимание того, как взаимодействует деятельность, может быть немного ошибочным.

+1

Рассмотрите возможность использования фрагментов, которые позволят вам создавать и управлять частями вашего пользовательского интерфейса, не выходя из текущего Activity для вашей логики управления. –

+0

@DougStevenson Спасибо, я думаю, что переключу таблицу лидеров в список фрагментов. Обновленный вопрос, чтобы лучше объяснить, чего я пытался достичь. –

ответ

2

но мне было интересно, если это возможно, чтобы сделать это так, а

Нет, по двум причинам:

  1. Вы не можете создать экземпляр трудовой деятельности самостоятельно с помощью конструктор

  2. Нет Intent механизм для передачи Activity другому Activity

Если эти действия тесно связаны друг с другом, возможно, они не должны быть отдельными действиями вообще, а быть одним действием.

Провести аналогию: если это было веб-приложение, будет ли эта функция принадлежать двум отдельным веб-страницам или одной странице? Если последнее, используйте одно действие. Если первый, используйте два действия ...но тогда вам нужно иметь дело с разделением между этими действиями, так же, как вам нужно будет разбираться в разделении между веб-страницами в веб-приложении.

+0

Спасибо за понимание. Я боялся, что так будет. Отредактированный вопрос с некоторым дополнительным объяснением как ответ на вашу аналогию. –

Смежные вопросы