当前位置: 首页 > 知识库问答 >
问题:

从其他活动完成活动

鱼征
2023-03-14

我有3个活动A、B和C。A导致B,B导致C。我希望能够在A和B之间来回移动,但我希望在C开始后完成A和B。我知道如何在通过意图启动C时关闭B,但在启动C时如何关闭A?

共有3个答案

曾宏毅
2023-03-14

我知道这是一个非常晚的回应,但我觉得< code>BroadcastReceiver是解决这个问题的最佳方法

在活动A中添加此

    //class object
    BroadcastReceiver receiver;

    //add this to onCreate()
    receiver =new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };
    IntentFilter filter =new IntentFilter();
    filter.addAction("FINISH_A");
    registerReceiver(receiver, filter);

   //add this to Activity A as well
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }

然后,在活动C onCreate()中(或者当您想完成活动A时)

Intent local =new Intent();
    local.setAction("FINISH_A");
    sendBroadcast(local);
宋望
2023-03-14
((Activity)context_of_another_activity).finish();
越英韶
2023-03-14

在您的< code>onCreate()方法中,将一个静态实例赋给一个变量以创建一个Singleton:

public static ActivityA instance = null;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    instance = this;
}

@Override
public void finish() {
    super.finish();
    instance = null;
}

然后在C中:

public void onCreate(Bundle savedInstanceState) {
    if(ActivityA.instance != null) {
        try {  
            ActivityA.instance.finish(); 
        } catch (Exception e) {}
    }
}

(对B和A重复上述代码)

我会说这并不优雅,并且必然会引入奇怪的生命周期错误。

如果你能调整你的需求会更好——如果你不能,你也许可以使用一个单独的活动,把A、B和C改变成< code >片段?

我会建议广播,但据我所知,您不能在“未恢复”活动中拥有实例级广播接收器。

使用服务绑定到活动似乎有些过分 - 但如果上述方法不起作用,您可能需要考虑这一点。

祝你好运!

 类似资料:
  • 问题内容: 有人知道如何从其他活动中关闭一个活动吗?例如:我有3个活动(活动A,B和C),并且可以从活动C中关闭活动A。我的活动结构是活动A->活动B->活动C如何从中关闭活动A活动C? 我曾尝试此代码: 但是该代码只能关闭活动B的活动A,而不能直接关闭活动C的活动A。 有谁知道直接从其他活动关闭活动?谢谢.. 问题答案:

  • 当我创建时,我需要从另一个活动中删除一个片段,而不是创建它的活动: 然后我可以从片段中访问另一个活动,假设片段中有一个按钮可以打开另一个活动,现在,停留在该活动中我想删除启动该活动的片段,我得到该片段的参考号通过意图。所以我尝试: 但它给了我一个nullPointerException, 03-07 22:42:33.270 30993-30993/河马。rggmiranda。hiposleep

  • 我正在尝试创建一个导航抽屉活动,这样我就可以扩展该活动,并按照这个问题链接中给出的答案在所有活动中使用菜单,但我的测试应用程序总是崩溃,下面是我的代码: BaseActivity.java

  • 我想使用下面另一个活动简单代码示例中的活动上下文,有什么想法吗? 谢谢

  • 用例:我正在开发一个Android应用程序,它有一个带有4个选项卡的视图页码,所有这些选项卡都是片段。对于每个选项卡/片段,我必须连接到具有 Oauth 的 REST Api,并且令牌每 5 分钟过期一次。 当前解决方案:使用RxJava和retryWhen操作符,我可以在收到401 HTTP错误时重新进行身份验证。对于订阅和消费的每个可观察流,使用: 因此,当令牌到期时,流将使用它,然后执行真正