我从活动A开始活动B.
调用非活动类中的回调方法,指示我应该关闭活动B.
如何从非活动类关闭活动B?
请记住,活动B并不总是相同的活动,但A是。例如,在我的情况下,A是MainActivity
,B是我可以从MainActivity
启动的任意数量的其他活动。
TLDR;如何从非活动类关闭当前前台活动。
答案 0 :(得分:1)
你应该使用广播。
您可以使用SuperActivity
,其他活动可以从SuperActivity
在SuperActivity
,
if(intent.getAction.equals(your custom action))(
finish();
)
和B活动扩展了SuperActivity
将Context
作为参数传递给非活动类,在此方法结束时,使用Context
发送广播。
不要忘记B Activity
为finish
答案 1 :(得分:0)
避免将活动对象传递给非活动类
您可以使用侦听器并仅传递侦听器对象... create
您的自定义侦听器和非Activity类将此侦听器作为
参数,然后为所有B活动制作一个superB活动
你想完成然后你的superB实现这个监听器和
所有B活动都会覆盖此侦听器方法。
示例:强>
这是您的自定义侦听器
public interface CustomLisnter {
void finishBActivity();
}
在您的superB Activity中实现此侦听器
public abstract SuperBActivity implements CustomLisnter{
}
然后在你的B Activity扩展SuperBActivity并覆盖finishBActivity()方法。
public BActivity extends SuperBActivity{
//when ever in your code you call non Activity Class that has the callback
// pass this activity in its constrictor like this
SomeClassToFinishActivity mClass = new SomeClassToFinishActivity(this);
@override
public finishBActivity(){
//here you can finish activity
finish();
}
}
在非活动类中负责完成当前的BActivity 将此监听器传递给它。
public SomeClassToFinishActivity {
private CustomLisnter mListener;
public SomeClassToFinishActivity(CustomLisnter listener){
this.mListener = listener;
}
}
并在你应该完成活动的回调中调用此
private void yourCallBackMethodToFinishActivity(){
mListener.finishBActivity();
}
我希望能帮到你..如果你有问题,请告诉我。