0

假设我在后台有 10 个活动。后台堆栈中的第 10 个活动(这是活动 A 的实例)的更改如何会触发后台堆栈中的第二个活动(也是活动 A 的实例)的更改。

我不能使用的原因StartActivityForResult是更改可能发生在第 n 个活动中。我不能继续使用onActivityResult.

此外,由于同一活动的实例数,我不能使用静态数据。

实际场景:

以 twitter 为例,我有我的关注者列表,可以选择关注列表中的用户,我可以选择一个人,转到他的关注者列表,在那里我会看到每个用户的关注选项等等。

那么,如果我在 backstack 的第 10 个列表中关注某个用户,这将如何反映在包含同一用户的第一个列表中?我的意思是它必须从跟随变为跟随。

4

2 回答 2

0

您应该以与活动分开的方式存储数据。通常这是通过 sqlite 数据库完成的。基本思想是,当用户执行您希望记录的操作时,您会以某种方式保存它。很可能在数据库中。现在数据已存储并可访问。

下一步是如何在 Activity 中显示更新的数据。这通常在Activity#onResume(). 在 onResume 中,您将执行一些可以检索存储数据的操作,然后更新您的显示。startActivityForResult或多或少地用于其名称所暗示的含义。以被调用者的意图启动另一个活动,为调用者提供一些数据。它不用于尝试通过 Activity 堆栈发送数据和状态。

于 2013-08-06T06:56:49.650 回答
-1

如果您不想使用 startActivityForResult 那么您需要创建每个活动的静态实例以使其可以从任何其他活动访问。例如:-

公共类 xyz 扩展 Activity {

 private static xyz instance;

 public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       ................
       ................
       instance = this; 

 }

 public static xyz getInstance(){
       return instance;
 }

}

于 2013-08-06T06:12:46.320 回答