我有三个活动A,B和C,其中C是调用HOME屏幕的活动,如下所示
finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
首先,活动A将通过
调用活动B.Intent B_intent = new Intent(this, B.class);
B_intent .putExtra("B_Activity", true);
this.startActivity(B_intent );
然后,从A,我也可以调用C活动(A通过使用线程来做)。我的问题是当我调用C活动时如何清除/删除/或完成活动B,这样当我再次调用B时,它必须转到B_Activity类中的onCreate()函数 我尝试使用函数
if (getIntent().getBooleanExtra("B_Activity", false))
{
finish();
}
非常感谢
答案 0 :(得分:1)
我有3种解决方案:
1)首先,您只需实现B_Activity的onResume()方法功能,这样当您从C_Activity返回到B_Activity时,它就会被执行。
2)我强烈建议你应该使用 Fragments 。
3)如果这不能解决您的问题,那么此类用例的最佳方法是制作 静态工厂方法 像这样:
public static void finishActivity(MainActivity mainActivity){
if(mainActivity!=null)
mainActivity.finish();
}
现在打电话:
MainActivity.finishActivity(mainActivity);
从您想要关闭SecondActivity的运行实例的任何地方。您必须传递MainActivity的实例,并且一旦启动它就可以获得它。
希望这会有所帮助。快乐的编码:)
答案 1 :(得分:0)
B.this.finish(); // it will destroys the activity B
在通过意图进入活动C之前,按照以下方式销毁活动B,
B.this.finish();
Intent i = new Intent(B.this,C.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
现在当您从活动A / C调用活动B时,它将调用B活动的onCreate()。