我在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.
答案 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 B
后Activity A
将恢复并调用方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
这是您处理结果的地方。
你可以在这里阅读所有相关内容:
http://developer.android.com/reference/android/app/Activity.html#StartingActivities