Java 在android中,我如何在父活动和子活动之间进行通信

Java 在android中,我如何在父活动和子活动之间进行通信,java,android,android-activity,listener,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中搜索过 但是按照上面的答案调用函数stateChanged()需要很多时间。有没有更快的办法 当在活动C中完成任务时,可以使用Librar

我有三项活动——活动A、活动B、活动C。活动A是启动器活动。从这个活动,我转到活动B

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

public class B extends C 
public abstract class C extends BaseActivity
现在我想在完成活动C中的一些任务后,在活动B中做一些事情。我在google和stackoverflow中搜索过


但是按照上面的答案调用函数stateChanged()需要很多时间。有没有更快的办法

当在活动C中完成任务时,可以使用Library在活动B中触发事件当在活动C中完成任务时,可以使用Library在活动B中触发事件每个
B
活动都是
C
活动。因此,如果您在
C
中定义了一个继承的方法,即该方法是公共的、受保护的或包私有的,且B位于同一个包中,则按照以下方式重写该方法:

@Override 
protected void method (){
    super.method ();
    myTaskAfterSuperMethodReturns ();
}
如果您正在更好地执行某些异步任务,那么可以在类B中定义异步任务


另一种方法是在类
C
中将
doSomething
定义为障碍方法,并在
B
中实现。任务完成后,调用
doSomething
。制作
doSomething
摘要将迫使
B
执行它。

每个
B
活动都是
C
活动。因此,如果您在
C
中定义了一个继承的方法,即该方法是公共的、受保护的或包私有的,且B位于同一个包中,则按照以下方式重写该方法:

@Override 
protected void method (){
    super.method ();
    myTaskAfterSuperMethodReturns ();
}
如果您正在更好地执行某些异步任务,那么可以在类B中定义异步任务


另一种方法是在类
C
中将
doSomething
定义为障碍方法,并在
B
中实现。任务完成后,调用
doSomething
。制作
doSomething
摘要将强制
B
实现它。

您也可以从其他类似活动访问MainActivity的方法:

主课

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

您还可以从其他活动访问MainActivity的方法,如下所示:

主课

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

那么,超类是否依赖于子类呢?OP清楚地提到了这种情况。在这个上下文中考虑回答。那么,超级类不依赖于子类吗?OP清楚地提到了这种情况。考虑在这种情况下回答问题。