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

时间:2017-07-30 07:38:13

标签: java android android-activity listener

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

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

public class B extends C 
public abstract class C extends BaseActivity

现在,我希望在完成活动C中的某个任务后在活动B中执行某些操作。我在google和stackoverflow中搜索过。 This leads me to this answer.

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

3 个答案:

答案 0 :(得分:1)

每个var getRating = []; $('.review-value').each(function () { getRating.push($(this).data("rating")); }); alert(getRating);活动都是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <div class="review-value" data-rating="5"></div> <div class="review-value" data-rating="7"></div>个活动。因此,如果您在B中定义一个继承的方法,即该方法是 public protected package-private ,其中B为相同的包然后重写方法如下:

C

如果您正在更好地执行某些异步任务,请在B类中定义异步任务。

另一种方法是在类C中定义@Override protected void method (){ super.method (); myTaskAfterSuperMethodReturns (); } 作为obstract方法,并在doSomething中实现它。任务完成后,请致电C。将B抽象化会迫使doSomething实施它。

答案 1 :(得分:0)

当在活动C中完成任务时,您可以使用EventBus库来激活活动B中的事件

答案 2 :(得分:-1)

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

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()