我有3个活动A、B和C。A导致B,B导致C。我希望能够在A和B之间来回移动,但我希望在C开始后完成A和B。我知道如何在通过意图启动C时关闭B,但在启动C时如何关闭A?
我知道这是一个非常晚的回应,但我觉得< 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);
((Activity)context_of_another_activity).finish();
在您的< 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错误时重新进行身份验证。对于订阅和消费的每个可观察流,使用: 因此,当令牌到期时,流将使用它,然后执行真正