我是android的新手。实际上,一个处理程序在Home Activity A中每30秒运行一次以检查网络连接。
如果我通过A-> B-> C进入活动C,如果当时没有网络连接,那么我想关闭活动B和C,然后想在Activity中显示消息框A.
但是我的问题是我的处理程序在Home Activity A中每30秒运行一次。但是如果我在Activity C或其他Activity中如何找到我的应用程序当前关注的活动。然后我想完成那些儿童活动,并希望显示家庭活动A我在活动B中有9个孩子活动。
我听说过使用“FLAG_ACTIVITY_CLEAR_TOP”。我在Home活动A本身的处理程序中使用了以下代码。但是得到了错误。
Intent intent = new Intent( ctx, Homepage.class );
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
ctx.startActivity( intent );
这里的Homepage.class是我的家庭活动A,我在清单文件中将该活动设置为
android:launchMode="singleTop"
请帮忙!
答案 0 :(得分:5)
您可以启动活动A并关闭所有其他活动。 您必须创建新意图并添加标志FLAG_ACTIVITY_CLEAR_TOP
Intent activityA = new Intent(context, ActivityA.class);
activityA.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.StartActivity(activityA);
这将关闭堆栈中的所有活动,并且位于活动A的顶部
答案 1 :(得分:0)
当调用Acitivity C时,在活动B中调用finish,当从C调用Activity A时,在活动C中调用finish()!
答案 2 :(得分:0)
你可以使用,根据我的两种方式,
如果使用startActivityForResult启动活动,则可以在完成此活动时调用此活动中的finish(),它会将控制权返回给启动它的活动。
或者,否则,我可能是错的,
在 onStop '覆盖方法'中调用完成。
答案 3 :(得分:0)
制作统一的 resultCode 以关闭子活动。例如。你将 911 (应该是int)作为你的resultCode。如果您希望活动完成并直接返回到父活动,则将resultCode设置为911:
setResult(911); finish();
在每个子活动中,您覆盖onActivityResult并检查resultCode是否为911.如果是,则调用setResult(911); finish();
,直到您返回到父活动。希望这有帮助!
答案 4 :(得分:0)
例如,如果要启动intentB,可以在旧活动中执行以下操作:
Intent intentB = new Intent();
intentB.setClass(XYZ.this, abc.class);
intentB.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentB);