1

已尝试在 StackOverflow 上搜索并测试所有可能性,但我仍然卡住了,如果这看起来像重复,请多多道歉!

这是我要实现的目标的概述:

我有一个用户资料。它由 UserProfileActivity 和 UserProfileFragment 组成,其中视图和数据投影在片段中处理。还传递了一个用户 ID (objectId) 以显示相应用户的个人资料。

在此用户配置文件上,您可以单击用户的关注者列表(由 ListFollowerActivity 和 ListFollowerFragment 组成)。在此关注者列表中,单击个人会再次导致 UserProfileActivity,这次使用不同的用户 ID。

目前正在发生的事情:

我目前用于从 ListFollowerFragment 加载 UserProfileActivity(带有新用户 ID)的代码是;

Intent intent = new Intent(parent, UserProfileActivity.class);
Bundle bundle = new Bundle();
bundle.putString(C.bundleKey.objectId, objectId);  // objectId = user ID!
intent.putExtras(bundle);
startActivity(intent);

我已经从 ListFollowerFragment 中的重新加载意图中对对象 ID 执行了 out.println,它正确打印了正确的用户 ID。(被点击的用户的 ID。)

但实际上,该应用程序会再次重新加载相同的用户配置文件(这是以前的用户 ID,而不是新的用户 ID)。

如何让 UserProfileFragment 刷新数据(和视图)以反映正确的用户?

一些观察: 似乎 UserProfileActivity 只是从第二次和后续加载中的先前状态(先前的用户 ID)“恢复”。(我从 UserProfileActivity 中的 onCreate() 和 UserProfileFragment 中的 onCreateView() 执行的任何 out.println() 从第二次加载开始都无法读取,但在第一次加载时正确读取!)

在导航到 ListFollowerActivity 时,我还尝试在 UserProfileActivity 上完成(),并且所有后续加载的 UserProfileActivity 都使用正确的用户 ID,大概是因为活动被杀死并重新启动。但这也意味着用户无法返回导航。非常感谢任何帮助。谢谢!(:

4

2 回答 2

0

在我的 AndroidManifest.xml 中,我发现了以下内容:

<activity
    android:name=".ui.UserProfileActivity"
    android:theme="@style/Theme.Styled.NoActionBar"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"/>

我将 launchMode 更改为“ singleTop ”,所有导航都开始按需要工作。

' standard ' 启动模式也可以工作,尽管这会不断创建新的 UserProfileActivity 实例(假设我们深入查看个人资料 A --> 查看 A 的关注者列表 --> 点击个人资料 B --> 查看 B 的关注者列表 -->点击配置文件 C,我相信这对性能不是很好)。

另一方面, “ singleTop ”允许您重用当前实例,只要它存在于堆栈中的当前活动之上。

于 2013-08-19T10:58:15.750 回答
0

我认为你可以从你objectID的. 像这样的东西。 getExtra()UserProfileFragment

if (getIntent().hasExtra("objectId"))
            object_id = getIntent().getExtras().getString("objectId");
于 2013-08-19T08:47:46.573 回答