如何在Android中进行回调。除了使用StartActivityForResult

时间:2013-08-06 06:01:04

标签: android

让我们说我在backstack中有10个活动。如何改变背斜堆中的第10个活动(这是活动A的一个实例)将触发后台堆中第二个活动的变化(这也是活动A的一个实例)。

我无法使用StartActivityForResult的原因是更改可能发生在第n个活动中。我不能继续使用onActivityResult向后发送数据。

此外,由于同一个Activity的no.of实例,我无法使用静态数据。

实际情景:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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

public class xyz extends Activity {

 private static xyz instance;

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

 }

 public static xyz getInstance(){
       return instance;
 }

}