如何在安卓中的父子活动之间进行通信



>我有三个活动 - 活动 A,活动 B,活动 C 。活动 A 是启动器活动。从这个活动,我去活动B。

活动 B 和活动 C 的定义如下:

public class B extends C 
public abstract class C extends BaseActivity

现在我想在完成活动 C 中的某个任务后在活动 B 中做一些事情。我已经在谷歌和堆栈溢出中搜索过。这让我想到了这个答案。

但是按照上面的答案调用函数 stateChanged(( 需要花费很多时间。有没有更快的方法可以做到这一点?

每个B活动都是C活动。因此,如果您在继承的C中定义一个方法,即该方法是公共的或受保护的或在同一包中与 B 的包私有,则按如下方式覆盖该方法:

@Override 
protected void method (){
super.method ();
myTaskAfterSuperMethodReturns ();
}

如果你正在更好地执行一些异步任务,你可以在类 B 中定义异步任务。

另一种方法是将类C中的doSomething定义为晦涩方法,并在B中实现它。任务完成后呼叫doSomething。使doSomething抽象将迫使B实现它。

当活动 C 中的任务完成时,可以使用事件总线库在活动 B 中触发事件

您还可以从另一个活动访问 MainActivity 的方法,如下所示:

主要活动.class

private static MainActivity mInstance;
public static MainActivity getInstance(){
return mInstance;
}

在 Oncreate 方法中初始化实例

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInstance = this;
}

创建要在下一个活动中使用的方法

@Override
public void showData(){
//do something here
}

要访问它,只需从另一个活动调用

(MainActivity.getInstance()).showData()

最新更新