将指向Activity的指针传递给下一个Activity

时间:2013-04-11 11:12:09

标签: android pointers android-activity android-fragments

我对来自iOS背景的Android编程(以及Java)非常陌生。 我想要做的是将指针从一个Activity传递给另一个Activity。

基本上,我有一个名为BeginActivity的启动活动,可以处理登录和注册屏幕的几个Fragments。登录后,我使用以下代码加载了名为TabsFragmentActivity的应用程序的主要活动:

public void loggedIn() {
    Intent intent = new Intent(this, TabsFragmentActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    this.startActivity(intent);

    finish();
}

我正在使用FLAG_ACTIVITY_CLEAR_TOP因为我不希望用户返回而没有先退出。

现在出现问题:

BeginActivity中,我有一个指向保存用户数据的片段的指针。我像单身一样使用它,前几个视图片段可以从BeginActivity访问。

在我调用TabsFragmentActivity之前,我需要将此同一个对象传递给新的finish()

我该怎么做? 我知道我可以使用putExtra(),但我相信这只是用于字符串等而不是其他片段。

新创建的TabsFragmentActivity中是否有一种方法可以引用BeginActivity来“抓取”指针?

由于

2 个答案:

答案 0 :(得分:1)

基本上你需要能够通过意图传递你的类,看看Serializable / Parcelable接口

这个问题有你需要的答案

How to pass an object from one activity to another on Android

答案 1 :(得分:1)

首先,您应该确定Fragments and Activity life cycle

片段旨在成为可重用的UI复杂组件。它们看起来像活动,但您可以重复使用。因此,您可以拥有包含相同片段的所需数量的活动,但不能包含这些片段的相同实例。

如果您只想将用户数据传递给其他活动,则必须使用BundleputExtra()。正如@gheese所说,可能需要implements Serializable or Parcelable Interfaces取决于用户数据类型。

除了使用BundleputExtra之外,如果您希望对两个或多个活动使用相同的UI片段外观。您希望此行为的每个活动都必须包含一个Fragment字段,并且在启动此片段时,您可以使用getActivity().getIntent().getExtra获取用户信息并填充您的片段。