getParent возвращает нуль в TabActivity - PullRequest
0 голосов
/ 07 сентября 2011

Я звоню getParent().setResult(0) в TabActivity.Это вызывается, когда пользователь нажимает предыдущую кнопку.Я хочу, чтобы текущая активность закрывалась и удалялась из стека.

getparent () возвращает ноль.Может кто-нибудь сказать мне, почему это происходит ??

getParent().setResult(0);
finish();

Спасибо

ОБНОВЛЕНИЕ: Это определение getParent () ... Что означает встроенный ребенок,А во-вторых, является ли TabActivity встроенным дочерним элементом, если он вызывается из другого Activity ??

public final Activity getParent ()
Return the parent activity if this view is an embedded child.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Вы не четко сформулировали свой вопрос.Вы хотите понять, как передать результат из действия в действие, которое его вызвало.Сначала вы должны понять, что действия не являются иерархическими, даже если они хранятся в заднем стеке.Более поздние действия не принадлежат к действию, из которого они вызваны.

Однако вот ответ на вопрос, который вы хотели задать:

Вы используете startActivityForResult(Intent, int)(Который вы можете прочитать на здесь )

Когда Activity A вызывает startActivityForResult() метод Activity B, он должен выполнять любую необходимую обработку, а затем, когда он завершает любой вызов:

setResult(RESULT_OK)

, когда требуется да / нет, или

setResult(RESULT_OK, intent)

, где намерением является Intent, который содержит связанную информацию, которую вы хотите использовать в Activity A для действий.После Activity B выходы Activity A возобновятся и вызовут метод:

 protected void onActivityResult(int requestCode, int resultCode, Intent data)

Здесь вы будете обрабатывать результат.

Вы можете прочитать все об этом здесь:

http://developer.android.com/reference/android/app/Activity.html#StartingActivities

1 голос
/ 07 сентября 2011

Если вы не хотите сохранять это действие в стеке истории, выполните одно из следующих действий:

a) при запуске TabActivity в родительском элементе добавьте флаг: FLAG_ACTIVITY_NO_HISTORY

Intent intent = new Intent(this, TabActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivityForResult(intent, requestCode);

b) ИЛИ добавить android: noHistory = "true" в манифесте действия, например, так:

    <activity
        android:name=".TabActivity"
        android:noHistory="true"
        ...
        >
        ...
    </activity>

Затем вернуть результат родителю и завершить TabActivity

Intent result = new Intent();
result.putExtra("somevalue", requestCode);
setResult(Activity.RESULT_OK, result); // or setResult(Activity.RESULT_CANCELED, result);
finish();

Когда вы закончите (); активность TabActivity не запомнится

...