Android экземпляр родительской активности - PullRequest
0 голосов
/ 24 октября 2011

У меня есть 2 вида деятельности, например, A & B. Я перехожу к действию B в действии A, используя startActivity()

У меня вопрос: когда я нахожусь на занятии B, как я могу получить доступ к занятию A?

Спасибо

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Чтобы получить доступ к функциям, которые совместно используются Активами, рекомендуется перенести эти функции в класс Application или какую-либо другую форму Singleton. Причина этого в том, что жизненный цикл действия не позволяет вам быть уверенным в том, что вышедшее действие все еще существует во время выполнения целевого действия. Поэтому вам нужно использовать объект, который может быть постоянным между действиями, даже если Activity.finish () вызывается для любого действия.

Вот документация по классу Application. http://developer.android.com/reference/android/app/Application.html

Вы можете получить доступ к приложению из любой деятельности, позвонив по номеру

this.getApplication();
0 голосов
/ 24 октября 2011

Почему бы вам не использовать одноэлементный класс, к которому могут обращаться оба Actvity?

0 голосов
/ 24 октября 2011

Это действительно зависит от того, что вы хотите сделать, и почему вы думаете, что вам нужен этот доступ. Одна вещь, которую вы можете сделать, это передать данные в действие, используя intent.putExtra, а затем startActivityForResult и прослушать результаты в onActivityResult. Можете ли вы дать больше информации о том, что именно вы хотите сделать?

Чтобы выполнить метод по завершении действия, вызовите дочернее действие, например:

Intent child = new Intent(this, ChildActivity.class);
startActivityForResult(child, CHILD_CODE);

, где CHILD_CODE - неотрицательное целочисленное поле. Теперь вам нужно установить результат в дочернем действии (которое вы начали с onActivityResult).

    Intent resultIntent = new Intent();
    setResult(Activity.RESULT_OK, resultIntent);
    finish();

теперь в вашей «родительской» деятельности реализуйте метод onActivityResult следующим образом:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
    case CHILD_CODE:
        if (resultCode == Activity.RESULT_OK) {
            yourMethod();
        }
    }
}
...