如何从非活动类关闭当前前台活动

时间:2017-06-23 23:37:27

标签: java android

我从活动A开始活动B.

调用非活动类中的回调方法,指示我应该关闭活动B.

如何从非活动类关闭活动B?

请记住,活动B并不总是相同的活动,但A是。例如,在我的情况下,A是MainActivity,B是我可以从MainActivity启动的任意数量的其他活动。

TLDR;如何从非活动类关闭当前前台活动。

2 个答案:

答案 0 :(得分:1)

你应该使用广播。

您可以使用SuperActivity,其他活动可以从SuperActivity

延伸

SuperActivity

中注册广播
if(intent.getAction.equals(your custom action))(
    finish();
)

和B活动扩展了SuperActivity

Context作为参数传递给非活动类,在此方法结束时,使用Context发送广播。

不要忘记B Activityfinish

时,广告应取消注册

答案 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();
}

我希望能帮到你..如果你有问题,请告诉我。