getParent在TabActivity中返回null

时间:2011-09-07 00:35:33

标签: android tabactivity

我在getParent().setResult(0)中呼叫TabActivity。当用户点击上一个按钮时调用此方法。我希望当前活动关闭并从堆栈中删除。

getparent()返回null。有人能告诉我为什么会这样吗?

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

由于

更新:这是getParent()的定义......嵌入式子项的含义是什么。其次,TabActivity是一个嵌入式子节点,如果从另一个Activity调用它?

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

2 个答案:

答案 0 :(得分:1)

如果您不想将此活动保留在历史记录堆栈中,请执行以下操作之一:

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活动

答案 1 :(得分:1)

你没有明确说明你的问题。您想了解如何将结果从Activity传递回调用它的Activity。您必须首先了解活动不是分层的,即使它们保留在后台堆栈中。以后的活动不会属于它们被调用的活动。

然而,这是你要问的问题的答案:

您正在使用startActivityForResult(Intent, int)(您可以在here上阅读)

Activity A调用startActivityForResult()方法Activity B时,这应该执行所需的任何处理,然后当它退出任一调用时:

setResult(RESULT_OK)

当需要是/否或

setResult(RESULT_OK, intent)

其中intent是Intent,其中包含您要在Activity A中使用的捆绑信息。 退出Activity BActivity A将恢复并调用方法:

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

这是您处理结果的地方。

你可以在这里阅读所有相关内容:

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