我对来自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
来“抓取”指针?
由于
答案 0 :(得分:1)
基本上你需要能够通过意图传递你的类,看看Serializable / Parcelable接口
这个问题有你需要的答案
How to pass an object from one activity to another on Android
答案 1 :(得分:1)
首先,您应该确定Fragments and Activity life cycle。
片段旨在成为可重用的UI复杂组件。它们看起来像活动,但您可以重复使用。因此,您可以拥有包含相同片段的所需数量的活动,但不能包含这些片段的相同实例。
如果您只想将用户数据传递给其他活动,则必须使用Bundle
和putExtra()
。正如@gheese所说,可能需要implements Serializable or Parcelable Interfaces
取决于用户数据类型。
除了使用Bundle
和putExtra
之外,如果您希望对两个或多个活动使用相同的UI片段外观。您希望此行为的每个活动都必须包含一个Fragment
字段,并且在启动此片段时,您可以使用getActivity().getIntent().getExtra
获取用户信息并填充您的片段。